【发布时间】:2021-06-08 00:47:03
【问题描述】:
我的 C 代码有问题。请看下面的代码:
#include<stdio.h>
int main()
{
char name[30]; // Declaring the string-array
FILE* fileptr; // Declaring the FILE pointer
char file[10];
printf("Please enter the file name : ");
scanf("%s",file);//Taking a single word input
fileptr = fopen(file,"w");
if (fileptr == NULL)
{
printf("No such file found !");
}
puts("Please enter some strings here: ");
gets(name); //Line 17
fputs(name,fileptr);
printf("\nStrings saved to %s",file);
fclose(fileptr);
}
问题出在第 17 行,我使用 gets() 而不是 scanf() 但我不知道它是否正确。我无法在此处使用 gets() 或其他功能获得任何用户输入。但是我想输入多个单词或行字符串,并在打印第 16 行后跳过,然后打印第 19 行。它没有给我任何输入的机会。我该怎么办? 请帮帮我。 提前致谢。 :)
【问题讨论】:
-
“我无法获得任何用户输入”。你能澄清一下这到底是什么意思吗?给出准确的输入、预期行为和实际行为。
-
我应该使用什么来获取多行用户输入?
-
永远不要使用
gets()——它不安全。添加一个循环以获取多行输入。请注意,gets()会删除换行符,fputs))不会添加它们。 -
请注意,
scanf()在输入中留下了一个换行符,gets()立即读取并丢弃并返回一个空字符串。