这就是我尝试做的事情(如果一行的第一个字符'\n'
必须是空行),但是它给我错误信息:"Thread 1: EXC_BAD_ACCESS (code=1, address=0x68"
在fgets
..行
#include<stdio.h>
#define MAX_LEN 80
int main(int argc, char *argv[])
{
FILE *fin,*fout;
fin=fopen("poem_in.txt","r");
fout=fopen("poem_out.txt","w");
char line[MAX_LEN];
do {
fgets(line, MAX_LEN, fin);
if ((line[0])!='\n') fputs(line,fout);
} while(fgets(line, MAX_LEN, fin)!=NULL);
fclose(fin);
fclose(fout);
return 0;
}
我试着看一下教授给出的更正,但她使用了strcmp(line,"\n")
它,所以它不是很有用,我不知道如何比较字符串和字符?任何帮助将不胜感激,将对我的学习有很大帮助!
您fgets()
每次循环调用两次。结果,您仅检查每隔一行是否为空。
像这样做。
while (fgets(line, MAX_LEN, fin)) {
if ((line[0])!='\n') fputs(line,fout);
}
如果您fgets()
在线上遇到错误,则可能是因为文件未成功打开。您应该先检查一下。
fin=fopen("poem_in.txt","r");
if (!fin) {
fprintf(stderr, "Can't open put file poem_in.txt\n");
exit(1);
}
fout=fopen("poem_out.txt","w");
if (!fout) {
fprintf(stderr, "Can't open output file poem_out.txt\n");
exit(1);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句