关于输入/输出的 C 语言程序没有 运行 正确
C language programs about input / output do not run properly
我是编程新手。我的英语不好所以我用google翻译来问这个问题:
我正在练习使用 C 语言 input/output。我编写了一个 C 程序,它接受一个名为 sample.txt 的文件并在其中写入几行文字。感觉自己做的程序是对的,但是编译的时候发现错误
#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;
}
这是输出:
enter image description here。
enter image description here
为什么 1 号线和 2 号线不像其他的那样分开?查了好几遍都不知道哪里出了问题
正如人们在评论中已经指出的那样,您需要处理 scanf
留下的换行符,以免之后被 fgets()
消耗。您可以在 scanf 之后添加一个 getchar()
来处理这个问题:
printf("Number of line? ");
scanf("%d",&n);
getchar();
或者您可以将 scanf 的用法替换为 fgets(),然后是 sscanf:
char input[10];
...
fgets(input, 10, stdin);
sscanf(input, "%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
我是编程新手。我的英语不好所以我用google翻译来问这个问题:
我正在练习使用 C 语言 input/output。我编写了一个 C 程序,它接受一个名为 sample.txt 的文件并在其中写入几行文字。感觉自己做的程序是对的,但是编译的时候发现错误
#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;
}
这是输出: enter image description here。 enter image description here
为什么 1 号线和 2 号线不像其他的那样分开?查了好几遍都不知道哪里出了问题
正如人们在评论中已经指出的那样,您需要处理 scanf
留下的换行符,以免之后被 fgets()
消耗。您可以在 scanf 之后添加一个 getchar()
来处理这个问题:
printf("Number of line? ");
scanf("%d",&n);
getchar();
或者您可以将 scanf 的用法替换为 fgets(),然后是 sscanf:
char input[10];
...
fgets(input, 10, stdin);
sscanf(input, "%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