【发布时间】:2015-07-26 14:11:27
【问题描述】:
我有一个包含以下内容的文本文件“123.txt”:
123456789
我希望输出是:
123
456
789
这意味着,必须在每 3 个字符之后插入一个换行符。
void convert1 (){
FILE *fp, *fq;
int i,c = 0;
fp = fopen("~/123.txt","r");
fq = fopen("~/file2.txt","w");
if(fp == NULL)
printf("Error in opening 123.txt");
if(fq == NULL)
printf("Error in opening file2.txt");
while (!feof(fp)){
for (i=0; i<3; i++){
c = fgetc(fp);
if(c == 10)
i=3;
fprintf(fq, "%c", c);
}
if(i==4)
break;
fprintf (fq, "\n");
}
fclose(fp);
fclose(fq);
}
我的代码工作正常,但在文件末尾也打印了一个换行符,这是不希望的。这意味着,在上面的示例中,在 789 之后添加了一个换行符。如何防止我的程序在输出文件末尾添加虚假换行符?
【问题讨论】:
-
while (!feof(fp))是always wrong。 -
@melpomene 你能详细说明一下吗?
-
@Sebi:仔细阅读
feof所做的事情,然后进一步阅读并思考其中的含义。如果这没有帮助,请阅读 melpomene 链接的问答。