C语言编程:编写一个程序,该程序的功能:去掉一个程序中的所有注释,如“×××××” “*××××*”。

C语言编程:编写一个程序,该程序的功能:去掉一个程序中的所有注释,如“×××××” “*××××*”。,第1张

这个吵冲程序可以实现对于注释//---的一行内容进行删除。

但对于/*

*/还不能实现。

程序中有两点错误:

1,字谨孝符'\'要写成转义符

2,while条件不正确

对程序修改如下:

#include

#include

#include

#include

void

main()

{

char

ch,ch3

char

ch1

char

ch2

FILE

*r

FILE

*w

r=fopen("f:\\a.txt","r")

w=fopen("f:\\b.txt","w")

ch1=fgetc(r)

while(ch1!=EOF)

{

ch2=fgetc(r)

if(ch1=='\\'&&ch2==祥碰稿'\\')

//这里------

{

do

{

ch3=fgetc(r)

}while(ch3!='\n')

//这里------

}

else

{

fputc(ch1,w)

fputc(ch2,w)

}

ch=fgetc(r)

ch1=ch

}

}

分别做2次处理。

第一次处理 //

第二次处理 /* ..*/ ...

第一次处理 用fgets()

while (!feof(fin)){

if ( fgets(one_line,1023,fin)==NULL) break

len = strlen(one_line)

for (i=0i<len-1i++){

if (one_line[i]=='/' &&one_line[i+1]=='/'){

one_line[i] = '\0'break

}}// for i

if (i>0) fprintf(fout,"%s",one_line)

if (i<len-1) fprintf(fout,"\n")

}

------------------------

第二次处理 用 fgetc()

设初始状态 flag = 0

loop:

读一个字符c1

读下一个字符c2

连续读到的两个字符不是 /* 时, 输出c1,c2赋给c1,再 读下一个字符给c2, (如果c2是EOF则输出c1,程序结束。)直到 连续晌帆读到的两个字符禅配是宴袭雹 /*

flag = 1

接下,不输出,只读,直到 连续读到的两个字符是*/

flag = 0

goto loop

1、少了很多大括号,包括while的,if else的

2、while(feof(fp1)!=EOF) 最好改为while(!feof(fp1))

3、我改后测了一下,这个程序只能删除“/* */”的注释,对“//”的注释无效。再改一下状态机吧。

4、下面的程粗橘序我把格式整理了一下拍凳笑,没改什么算法部分。写程序要规范。

#include "stdio.h"

void delcomm(FILE*fp1,FILE*fp2)

{

char c

int i=0

while(!feof(fp1))

{

printf("test\n")

if((c=fgetc(fp1))=='\n')

fprintf(fp2,"\n")

else

{

switch(i)

{

case 0:

if (c=='/')

i=1

else

fprintf(fp2,"%c",c)

break

case 1:

if (c=='*')

i=2

else

{

fprintf(fp2,"袭含/%c",c)

i=0

}

break

case 2:

if (c=='*')

i=3

break

case 3:

i=(c=='/')?0:2

break

}

}

}

}

int main()

{

FILE*fp1,*fp2

if ((fp1=fopen("/home/hxl/test/md5.c","r"))==NULL)

{

printf("wrong!")

exit(0)

}

fp2=fopen("/home/hxl/test/md5out.c","w")

delcomm(fp1,fp2)

fcloseall()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8217422.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存