【发布时间】:2013-09-11 21:11:43
【问题描述】:
如何从一个任意长度的格式化(例如空格分隔)键盘行填充双精度或整数数组?
例如:
Enter the elements of the array:
2 32 12.2 4 5 ...
应该会导致
=> array[0] = 2
=> array[1] = 32 etc.
我知道我可以按如下方式使用 scanf,但这并不能解决我的问题,因为每个元素都应该一个一个地输入。
/* Input data from keyboard into array */
for (count = 1; count < 13; count++)
{
printf("Enter element : %d: ", count);
scanf("%f", &array[count]);
}
谢谢。
【问题讨论】:
-
使用
fgets从键盘读入整个字符串,然后扫描字符串-使用strtok查找空格,最后用sscanf解释“令牌”。 -
切勿使用
gets()!使用fgets()阅读它,也许。gets()函数本质上是不可修复的不安全函数,已被弃用,从当前版本的 C 标准中排除,并被 POSIX 标记为已过时。 -
您可以输入一串以逗号分隔的数字,例如“12.3,4.5,56.678,12.1,0.123”或任意长度。然后按回车键,将其作为字符串扫描。使用 strtok 将其拆分,然后使用 strtof() 将字符串转换为浮点数,并将它们分配给浮点数组。
-
@Floris:你不能认真推荐
gets! -
好吧好吧对不起错字了。我修好了它。我的意思是“以字符串的形式获取行并解析它”。
标签: c arrays fill keyboard-input formatted-input