所以我只用c ++编程,但我必须做一个小作业,需要使用c。我遇到的问题是我需要一个循环来读取用户空格分隔的数字(例如:1 5 6 7 3 42 5),然后取出这些数字并填充一个数组。
我写的代码是:
int i, input, array[10];
for(i = 0; i < 10; i++){
scanf("%d", &input);
array[i] = input;
}
编辑:添加了数组定义。 任何建议或提示都将受到高度赞赏。
答案 0 :(得分:2)
无论这里有什么问题,你都应该快速学会不要编写不检查你所做的任何API调用的返回值的代码。 scanf
返回一个值,您必须对它所说的内容感兴趣。如果呼叫失败,你的逻辑是不同的,是吗?
也许在这种情况下,它会告诉你出了什么问题。文档为here。
返回字段数 成功转换和分配; 返回值不包括 已读但不是的字段 分配。返回值为0 表示没有字段 分配
答案 1 :(得分:0)
此代码运作良好。
如果您的数字小于10,那么您必须知道在开始读取这个数字之前有多少个数字,或者最后一个数字必须是0才能终止输出然后您可以while(true)
循环,但是对于动态解决方案您必须将所有行读入字符串,然后使用sscanf
从该字符串中读取数字。
答案 2 :(得分:0)
您需要正确的#include
和正确的主要内容。以下适用于我
#include <stdio.h>
int main(void) {
/* YOUR CODE begin */
int i, input, array[10];
for (i = 0; i < 10; i++) {
scanf("%d", &input);
array[i] = input;
}
/* end of YOUR CODE */
return 0;
}
答案 3 :(得分:-2)
我不是程序员,但我可以建议一种算法,即使用scanf(“%s”,&amp; str)将所有输入读入char []数组,然后循环遍历它并使用if进行测试如果当前char是空格,则为statment,如果是,则将前一个数字添加到数组