//没登陆

欢迎您来到凯恩之角,奈非天!

帖子:70404

符文:0

跳转到指定楼层
1#
发表于 2017-2-9 13:08:56 |只看该作者 |倒序浏览 来自:四川
本帖最后由 消息中心 于 2017-2-10 08:02 编辑

召唤下猫猴@bigandy 来帮我看看,我的代码还有什么问题没有。


程序的目的是:删除C源文件中的所有注释。
PS:别吐槽那个10W个元素的数组。

  1. /*删除C源代码中的注释
  2. PS:注释不允许嵌套*/
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #define MAXLINE 100000
  6. int getline(char s[], int size, FILE * fp);
  7. void del_annotation(char s[]);

  8. int main(void)
  9. {
  10.     char line[MAXLINE];
  11.     int i;
  12.     FILE *p_file_r, *p_file_w;

  13.     if((p_file_r = fopen("words.txt","r")) == NULL)//测试文件
  14.     {
  15.         fprintf(stderr,"无法打开读取文件");
  16.         exit(EXIT_FAILURE);
  17.     }

  18.     if((p_file_w = fopen("word1.txt","w")) == NULL)//测试文件
  19.     {
  20.         fprintf(stderr,"无法打开写入文件");
  21.         exit(EXIT_FAILURE);
  22.     }

  23.     while((i = getline(line,MAXLINE,p_file_r)) > 0)
  24.     {
  25.         del_annotation(line);
  26.         fprintf(p_file_w,"%s",line);//将跳过所有注释的字符串写入新的文本。
  27.     }

  28.     fclose(p_file_r);
  29.     fclose(p_file_w);
  30.     printf("Bye!\n");
  31.     return 0;
  32. }

  33. int getline(char s[], int size,FILE * fp)//
  34. {
  35.     int i,c;

  36.     for(i = 0; i < size - 1 &&  (c = fgetc(fp)) != EOF; i++)
  37.         s[i] = c;
  38.     s[i] = '\0';

  39.     return i;
  40. }

  41. void del_annotation(char s[])//删除C源文件中的注释;
  42. {
  43.     int i,j;

  44.     for(i = 0, j = 0; s[i] != '\0'; i++)
  45.     {
  46.         if(s[i] == '/')
  47.         {
  48.             if(s[i+1] == '*')
  49.             {
  50.                 i += 2;
  51.                 while(s[i] != '*' || s[i + 1] != '/')
  52.                     i++;
  53.                 i += 2;
  54.                 if(s[i] == '/')
  55.                 {
  56.                    i--;
  57.                    continue;
  58.                 }
  59.             }
  60.             else if(s[i+1] == '/')
  61.                 while(s[i] != '\n')
  62.                     i++;
  63.         }
  64.         else if(s[i] == '"' || s[i] == '\'')
  65.         {
  66.            char x = s[i];
  67.            while(s[j++] = s[i++] , s[i] != x && s[i] != '\0')
  68.                if(s[i] == '\\')
  69.                    s[j++] = s[i++];
  70.         }
  71.         s[j++] = s[i];
  72.     }
  73.     s[j] = '\0';
  74. }
复制代码
今夫平居里巷相慕悦,酒食游戏相征逐,诩诩强笑语相取下,握手出肺肝相示,指天日涕泣,誓生死不相背负,真若可信。一但临小利害,僅如毛发比,反眼若不相识,落陷阱,不一引手救,反挤之又下石焉者,皆是也。此宜禽兽夷狄所不忍为,而其人自视以为得计。

帖子:51921

符文:8873

2#
很高大上,看不懂
发表于 2017-2-9 13:11:31 |只看该作者 来自:江苏
暴虎除时拔远山
龙衔宝盖承朝日

帖子:90545

符文:1819

3#
胖猴吃了个包,撑了,在睡吧
发表于 2017-2-9 13:11:45 来自凯恩之角App |只看该作者 来自:广西

帖子:64327

符文:154

4#
猴哥想怎么收费好呢?
发表于 2017-2-9 13:31:29 |只看该作者 来自:澳大利亚





[armory]http://tw.battle.net/d3/zh/profile/Zily-1741/hero/15435840[/armory]

帖子:9545

符文:736

5#
好厉害的样子         
发表于 2017-2-9 14:00:36 |只看该作者 来自:黑龙江

帖子:46029

符文:4644

6#
看不懂的,只想知道运行结果
发表于 2017-2-9 14:06:29 来自凯恩之角App |只看该作者 来自:广东

帖子:16784

符文:214

7#
rogrog 发表于 2017-2-9 14:06
看不懂的,只想知道运行结果

就是这样   
                    chibaozi //吃包子  
                     变成
                    chibaozi

帖子:9879

符文:45

8#
大变态!
你不是滚了的吗?
咋又回来了?
发表于 2017-2-9 14:27:27 |只看该作者 来自:广东
<font size=&quot;4&quot;>
头像被屏蔽

帖子:41640

符文:460

9#
凯恩最后变成了编程论坛
发表于 2017-2-9 14:27:36 |只看该作者 来自:天津
签名被屏蔽

帖子:70404

符文:0

10#
天葬師 发表于 2017-2-9 14:27
凯恩最后变成了编程论坛

那不是挺好。
发表于 2017-2-9 14:28:59 |只看该作者 来自:四川
今夫平居里巷相慕悦,酒食游戏相征逐,诩诩强笑语相取下,握手出肺肝相示,指天日涕泣,誓生死不相背负,真若可信。一但临小利害,僅如毛发比,反眼若不相识,落陷阱,不一引手救,反挤之又下石焉者,皆是也。此宜禽兽夷狄所不忍为,而其人自视以为得计。

帖子:70404

符文:0

11#
封心毁 发表于 2017-2-9 14:27
大变态!
你不是滚了的吗?
咋又回来了?

我是滚了啊,我滚的好远好远了的。我正在遥远的太阳系之外跟你们进行思想上的交媾。
发表于 2017-2-9 14:29:36 |只看该作者 来自:四川
今夫平居里巷相慕悦,酒食游戏相征逐,诩诩强笑语相取下,握手出肺肝相示,指天日涕泣,誓生死不相背负,真若可信。一但临小利害,僅如毛发比,反眼若不相识,落陷阱,不一引手救,反挤之又下石焉者,皆是也。此宜禽兽夷狄所不忍为,而其人自视以为得计。

帖子:16784

符文:214

12#

菜鸡拙见 我感觉你可以去掉int main(void)的 void

帖子:9879

符文:45

13#
消息中心 发表于 2017-2-9 14:29
我是滚了啊,我滚的好远好远了的。我正在遥远的太阳系之外跟你们进行思想上的交媾。

。。。。。。。。你妹的最后一个字是什么鬼?
发表于 2017-2-9 14:30:23 |只看该作者 来自:广东
<font size=&quot;4&quot;>

帖子:70404

符文:0

14#
本帖最后由 消息中心 于 2017-2-9 14:36 编辑
猴王面甲 发表于 2017-2-9 14:30
菜鸡拙见 我感觉你可以去掉int main(void)的 void

去掉不符合标准好吗!没有参数得加上void,无返回值得带上void。
发表于 2017-2-9 14:32:08 |只看该作者 来自:四川
今夫平居里巷相慕悦,酒食游戏相征逐,诩诩强笑语相取下,握手出肺肝相示,指天日涕泣,誓生死不相背负,真若可信。一但临小利害,僅如毛发比,反眼若不相识,落陷阱,不一引手救,反挤之又下石焉者,皆是也。此宜禽兽夷狄所不忍为,而其人自视以为得计。

帖子:70404

符文:0

15#
封心毁 发表于 2017-2-9 14:30
。。。。。。。。你妹的最后一个字是什么鬼?

最后一个字啊!!!你猜,你可以理解成我在思想上那啥那啥你。

点评

天葬師  你们用思想互相强奸对方  发表于 2017-2-9 14:51
发表于 2017-2-9 14:33:38 |只看该作者 来自:四川
今夫平居里巷相慕悦,酒食游戏相征逐,诩诩强笑语相取下,握手出肺肝相示,指天日涕泣,誓生死不相背负,真若可信。一但临小利害,僅如毛发比,反眼若不相识,落陷阱,不一引手救,反挤之又下石焉者,皆是也。此宜禽兽夷狄所不忍为,而其人自视以为得计。
您需要登录后才可以回帖 登录 | 注册网易通行证