关于输入/输出的C语言程序运行不正常
我是编程新手。我的英语不好,所以我用谷歌翻译来问这个问题: 我正在练习用C语言输入/输出。我编写了一个C程序,它接受一个名为sample.txt的文件,并在其中写入几行字。我觉得我做的程序是正确的,但我在编译程序时发现了一个错误关于输入/输出的C语言程序运行不正常,c,for-loop,io,C,For Loop,Io,我是编程新手。我的英语不好,所以我用谷歌翻译来问这个问题: 我正在练习用C语言输入/输出。我编写了一个C程序,它接受一个名为sample.txt的文件,并在其中写入几行字。我觉得我做的程序是正确的,但我在编译程序时发现了一个错误 #include <stdio.h> int main(){ FILE *fptr; int n,I; char text[100]; fptr=fopen("sample.txt","w&q
#include <stdio.h>
int main(){
FILE *fptr;
int n,I;
char text[100];
fptr=fopen("sample.txt","w");
printf("Number of line? ");
scanf("%d",&n);
printf("\n");
for( i = 1; i <= n; i++){
printf("Line %d: ", I);
fgets(text, sizeof(text), stdin);
fputs(text, fptr);
}
fclose(fptr);
return 0;
}
#包括
int main(){
文件*fptr;
int n,I;
字符文本[100];
fptr=fopen(“sample.txt”,“w”);
printf(“行数?”);
scanf(“%d”和“&n”);
printf(“\n”);
对于(i=1;i,正如人们在评论中已经指出的那样,您需要处理scanf
留下的换行符,这样它就不会被fgets()
消耗。您可以在scanf之后添加getchar()
来处理此问题:
printf(“行数?”);
scanf(“%d”和“&n”);
getchar();
或者,您可以使用fgets()和sscanf替换使用scanf获取输入:
char输入[10];
...
fgets(输入,10,标准输入);
sscanf(输入、%d、&n);
当我进行这些更改时,我能够看到所需的输出:
c-posts : $ ./a.out
Number of line? 3
Line 1: Foo
Line 2: Bar
Line 3: Pong
c-posts : $ cat sample.txt
Foo
Bar
Pong
scanf
将换行保留在缓冲区中,而fgets
将其作为第一行读取。欢迎这样做。请不要添加文本截图。而是直接复制并粘贴文本到问题中。您的主要问题可能是,为什么输出文件中只有4行。这也是由这也有助于: