1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4
5#define STR_LEN 400
6
7void main()
8{
9 FILE *fpr, *fpw;
10 char ch, strline[STR_LEN + 1];
11
12 int i=0,p=0,q=0;
13 bool bFind = false, bEnd = false;
14
15 if ((fpr=fopen("c:\\c.c","r")) == NULL)
16 {
17 printf("open file fail!");
18 exit(0);
19 }
20 if ((fpw=fopen("c:\\c_new.c","w")) == NULL)
21 {
22 printf("write file fail!");
23 exit(0);
24 }
25
26/*
27判断文件结束 用 while(!feof(fpr)) 不是最安全的方式
28可以用 while (fgets(strline, sizeof(strline), fpr) != NULL) { ... } 代替
29*/
30 while(!feof(fpr))
31 {
32
33 //read a line
34 //fscanf("%s\n", fpr); //也可以读取一行,但前提是这一行中没有空格
35 fgets(strline, sizeof(strline), fpr);
36
37 p = 0;
38 q = strlen(strline);
39 bEnd = false;
40 for (i=0; strline[i]!='\0'; i++)
41 {
42 //find '//'
43 if (!bFind && strline[i] == '/' && strline[i+1] == '/')
44 {
45 p = i;
46 bFind = true;
47 bEnd = true;
48 break;
49 }
50 //find '/*'
51 if (!bFind && strline[i] == '/' && strline[i+1] == '*')
52 {
53 p = i;
54 bFind = true;
55 }
56 // find '*/'
57 if (bFind && strline[i] == '*' && strline[i+1] == '/')
58 {
59 q = i+2;
60 bEnd = true;
61 }
62 }
63
64 //delete row
65 if (bFind)
66 {
67 for (i=p; i<q; i++)
68 {
69 strline[i] = ' ';
70 }
71 if (bEnd)
72 {
73 bFind = false;
74 strline[i-1] = '\n';
75 }
76 }
77 printf("%s", strline);
78 fputs(strline, fpw);
79 }
80 fclose(fpr);
81 fclose(fpw);
82
83 system("pause");
84}