gpt4 book ai didi

c - 从 c 文件中删除注释后删除空格

转载 作者:行者123 更新时间:2023-11-30 15:46:32 25 4
gpt4 key购买 nike

我已成功从 input.c 文件中删除单行和多行注释,但在 input.c 文件中注释所在的位置,output.c 文件中会创建空行。如何删除它们?

#include<stdio.h>
int main()
{
FILE *f1,*f2;
char c;
int i=0;
f1=fopen("input.c","r");
f2=fopen("output.c","w");

while((c=getc(f1))!=EOF)
{
if(c=='/')
{
if((c=getc(f1))=='*' )
{
do
{
c=getc(f1);
}while(c!='*');

c=getc(f1);
if(c=='/')
c=getc(f1);
}
else
{
if(c=='/')
{
do
{
c=getc(f1);
}while(c!=10);
}
}
}
fseek(f2,1,i++);
putc(c,f2);
}
fclose(f1);
fclose(f2);
return 0;
}

最佳答案

c=getc(f1);
if(c=='/')
c=getc(f1);

这里做:

if (c=='\n')
c=getc(f1); /* that will read next char from input, when last red char is '\n' */

最后一行读取以“/”结尾的下一个字符。仅当 c 不是 '\n' 时,才应将其放入输出文件中。

这里也一样:

do
{
c=getc(f1);
}while(c!=10);

这里总是这样做:

c=getc(f1);

删除必须位于 c 变量中的“\n”才能停止循环执行。

实际工作时应该是这样的。

#include<stdio.h>
int main()
{
FILE *f1,*f2;
char c;
f1=fopen("fahr.c","r");
f2=fopen("output.c","w");

while((c=getc(f1))!=EOF)
{
if(c=='/')
{
if((c=getc(f1))=='*' )
{
do
{
c=getc(f1);
}while(c!='*');

c=getc(f1);
if(c=='/')
c=getc(f1);
if(c=='\n')
c=getc(f1);
}
else
{
if(c=='/')
{
do
{
c=getc(f1);
}while(c!=10);
c=getc(f1);
}
}
}
putc(c,f2);
}
fclose(f1);
fclose(f2);
return 0;
}

关于c - 从 c 文件中删除注释后删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18311857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com