我需要获取用户输入的 n 个字符串。为此,我首先定义了一个二维数组 char str[ ][ ]。
我使用 for 循环从用户处获得输入,并尝试了 gets() 和 fgets() 两种方法。在代码示例中,尽管我使用了 gets(),但它总是只取 n-1 个字符串,即比用户要求的少一个。
在进一步检查后,我发现程序没有为第 0 个字符串即初始字符串获取输入。
我的代码:
我使用 for 循环从用户处获得输入,并尝试了 gets() 和 fgets() 两种方法。在代码示例中,尽管我使用了 gets(),但它总是只取 n-1 个字符串,即比用户要求的少一个。
在进一步检查后,我发现程序没有为第 0 个字符串即初始字符串获取输入。
我的代码:
#include <stdio.h>
int main(void){
int i, n;
printf("how many string you want to enter: ");
scanf("%d", &n);
char str[n][60];
printf("start entering strings:\n ");
for(i=0;i<n;i++){
gets(str[i]); //have used here fgets() also
}
puts(str[0]); //no output for Oth string
return 0;
}
输出:
how many string you want to enter:
用户输入 - 3
how many string you want to enter: 3
start entering strings:
最终输出:
how many string you want to enter: 3
start entering strings:
abc
bcd
在输入了两个字符串后,程序就终止了,并且没有输出puts(str[0]);
尽管使用scanf()
按照scanf("%s", str[i]);
的方式输入可以正常工作。
我想知道为什么使用gets()
和fgets()
不起作用。
gets
。它是一个危险的函数,因此甚至已被从 C 标准中移除。 - Some programmer dudefgets
,但问题是它无法为str [0]输入数据。 - Vartika