【发布时间】:2013-06-20 03:26:18
【问题描述】:
我在使用下面的代码时遇到了一点问题,我一生都无法弄清楚出了什么问题以及为什么它会显示它的作用,任何帮助或帮助将不胜感激。它应该允许输入 5 行文本并在屏幕上显示这 5 行,但是它只允许输入 4 行,并显示 4 行。请帮忙!
#include <stdio.h>
int main()
{
char string[100];
char filename[20];
int n=0;
FILE *fp;
printf(" Enter the name of file to open ");
scanf("%s",filename);
fp =fopen(filename,"wr");
if(fp==NULL)
{
printf("unable to open File");
}
for(n=1;n<6;n++)
{
printf("\nEnter line %d:",n+1);
gets(string);
fputs(string,fp);
fputs("\n",fp);
}
fclose(fp); /*close the file*/
fp =fopen(filename,"r");
if(fp==NULL)
{
printf("unable to open File");
}
for(n=1;n<6;n++)
{
fgets(string,100,fp);
printf("%s",string);
}
fclose(fp); // close after reading.
return 0;
}
【问题讨论】:
-
首先要做的是使用基于 0 的循环而不是基于 1 的循环(对于 C 类型语言来说更自然 - 我注意到你已经有一个
n+1看起来它假设一个基于 0 的循环)。除此之外,它看起来应该可以工作。尝试在第一个循环之后打印n,看看它达到了 6... -
@John3136 他没有使用任何数组,除了几个他没有索引的字符串。
-
如果您在每次迭代后
fflush(stdout)会发生什么? -
@n3rd4n1 为什么有必要这样做?他在关闭文件之前不会读取文件,这将刷新所有内容。
-
@Barmar:注意我说的是
stdout而不是fp文件。