C语言:删除注释

您所在的位置:网站首页 c语言快速注释 C语言:删除注释

C语言:删除注释

2023-09-20 10:49| 来源: 网络整理| 查看: 265

基于做题之后得到的感悟,以此分享:

题目: 从键盘上读入一行字符(约定:字符数≤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