【发布时间】:2019-03-31 22:40:28
【问题描述】:
我需要输入 n (user-inputted) 字符串。为此,我首先定义了一个二维数组 char str[ ][ ]。
我使用for 循环从用户那里获取输入,并尝试了gets()、fgets() 两者。
在代码示例中,虽然我使用了 gets()。
但它总是输入 n-1 个字符串,即比用户想要输入的少 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
这里程序在仅输入 2 个字符串并且没有为 puts(str[0]); 提供任何输出后终止
虽然将scanf() 输入为scanf("%s", str[i]); 工作得非常好。
我想知道为什么使用gets()、fgets() 不起作用。
【问题讨论】:
-
首先,永远不要永远使用
gets。它是a dangerous function,因此甚至已从 C 标准中删除。 -
也试过
fgets。问题是它没有输入 str[0]
标签: c multidimensional-array fgets c-strings gets