#include<stdio.h>
void main()
{
FILE *fp,*fp1;
char c;
fp=fopen("test.txt","r");
fp1=fopen("test1.txt","w");
c=getc(fp);
while(c!=EOF)
{
if (c=="")
{
c=getc(fp);
continue;
}
else
fprintf(fp1,"%s",c);
c=getc(fp);
}
fclose(fp);
fclose(fp1);
}
Run Code Online (Sandbox Code Playgroud)
代码中存在许多可能导致问题的错误.
fp并fp1应依据它来检查NULL后,被分配的结果fopen来检查文件打开失败.
c应该是int这样的类型,以便您可以正确地区分EOF正确读取的有效字符.
c == "" 尝试将字符值与文字零长度字符串的地址进行比较.
fprintf(fp1,"%s",c)将该字符值c解释为常量字符串的地址,并尝试按照此地址打印字符串.这是导致分段错误的最可能的错误.
不太重要的风格问题.
返回值main应为a int.即使许多实现允许,它也是可移植的void main(void).
由于你的if子句的主体匹配如果循环运行到结尾并且后面跟a会发生什么continue,那么删除这个子句并应用与你认为c==""应该变成的相反的if语句可能会更清楚.目前是else声明.