C语言:删除注释 |
您所在的位置:网站首页 › c语言快速注释 › C语言:删除注释 |
基于做题之后得到的感悟,以此分享: 题目: 从键盘上读入一行字符(约定:字符数≤127字节),判断其中的注释是否合法,不合法则报错,合法时则删除注释后再输出。合法注释是指“/”标记注释开始、“/”标记注释结束,通常表现为/* ……*/。 本次分享分为两个步骤: 代码展示代码分享1.代码展示: #include #include int findfirst(char str[128]); int findlast(char str[128]); int main(void) { int first, last; char string[128]; char result[128]; printf("input a string:"); gets(string); first = findfirst(string); last = findlast(string); strcpy(result, string); printf("%s %s",result + first,string + last); if (first >= 0 && last >= 0) { strcpy(result + first, string + last); } if (first >= 0 && last >= 0 && last >= first + 4 || first == -1 && last == -1) { printf("Output:\nThe result is :\n"); puts(result); } else { printf("Output:\ncomment is error\n"); } return 0; } int findfirst(char str[128]) { int i; for (i = 0; str[i] != '\0'; i++) { if (str[i] == '/' && str[i + 1] == '*') { return i; } } return (-1); } int findlast(char str[128]) { int i; for (i = 0; str[i] != '\0'; i++) { if (str[i] == '*' && str[i + 1] == '/') { return i + 2; } } return (-1); } int findfirst(char str[128]); int findlast(char str[128]); 此处的子函的功能时是为找出'/*'和'*/',并对其脚标标记返回相应的脚标数值以便于主函数删除。 printf("%s %s",result + first,string + last);这一段是我特地加上去的,为的是能够更为清楚的体会到以下代码的作用: if (first >= 0 && last >= 0) { strcpy(result + first, string + last); }这段代码功能就是删除注释。 那为什么要采用result + first, string + last 这种表达式呢。 利用strcpy是为将后者复制到前者,利用 字符数组名+特定数字 这种写法能够指定在整个字符数组中从哪一个开始做输出,result + first 这一段就可以指定从——这个字符’/'开始到后面的内容。 图文并茂更好理解,如图: 图中的第二段内容就是以下语句的实现: printf("%s %s",result + first,string + last); 怎么删除呢? 靠的就是result + first从’/'开始输出后面的之后strcpy把string + last从’i’开始输出的后面部分复制给他以达到删除。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |