简单的C循环让我疯狂

时间:2010-11-23 23:44:20

标签: c

所以我只用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;
}

编辑:添加了数组定义。 任何建议或提示都将受到高度赞赏。

4 个答案:

答案 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,如果是,则将前一个数字添加到数组