C 将用户输入传递到数组中

C 将用户输入传递到数组中,c,C,如何接收用户输入(由逗号分隔的数字列表,例如345556423435),并将其存储到数组中 我提前知道我将从用户那里收到20个值 我曾尝试将用户输入“直接”传递到大小为20的数组中,但收到错误消息:format指定类型“int”,但参数具有类型 'int()[10]'[-Wformat] 我还研究了strtok函数的使用,尽管我不希望分隔符(')仍在数组中 如果您有任何想法,我们将不胜感激 谢谢。您可以使用scanf()函数来实现这一点 scanf函数的声明如下: int-scanf(常量字符*

如何接收用户输入(由逗号分隔的数字列表,例如345556423435),并将其存储到数组中

我提前知道我将从用户那里收到20个值

我曾尝试将用户输入“直接”传递到大小为20的数组中,但收到错误消息:format指定类型“int”,但参数具有类型 'int()[10]'[-Wformat]

我还研究了strtok函数的使用,尽管我不希望分隔符(')仍在数组中

如果您有任何想法,我们将不胜感激

谢谢。

您可以使用
scanf()
函数来实现这一点

scanf函数的声明如下:

int-scanf(常量字符*格式,…)

这意味着在使用
scanf()
函数时,可以指定接收的输入格式。类似于
printf()
函数,
scanf(“%c”,&character)
,例如,可用于从用户获取字符输入
scanf()
函数返回成功读取的次数

注意:您可以检查
scanf()
函数是否成功读取了预期数据,例如:

if (scanf("%d",&intNum)==1){
    //all is ok, proceed
}
else{
    //EOF or conversion failure
}
同样,如果要扫描多个变量,可以使用
if(scanf(“%d%d”)、&intNum1和&intNum2)==2
。为了读取和存储不同类型的输入,您可以使用以下(或更多)选项,而不是
%c

其中一些:

c
:字符
d
:十进制整数
f
:浮动
o
:八进制整数
s
:字符串
等等……

此外;例如,如果使用
scanf(“%d%f”、&integerNum和&floatNum),您将以int float(int SPACE float)格式读取用户输入,并将值分别存储到integerNum和floatNum变量中。
“%d%f”
之间的空格是格式的一部分

第二个参数(
&character
在我的例子中)是将值存储到的地址
scanf()。有关
scanf()
的更多信息:。可以在循环内使用
scanf()
将用户输入存储到数组中

以下是一个工作示例:

#include <stdio.h>

int main(){
    int array[20];
    int i;
    printf("Enter value to be stored in array> ");
    for (i=0;i<20;i++){
        //printf("Enter value to be stored in array[%d]> ",i);
        scanf("%d,",&(array[i]));
        //scanf("%d,",(array+i));
    }
    for (i=0;i<20;i++){
        if (i==19){
            printf("%d\n",array[i]);
            //printf("%d\n",*(array+i));
        }
        else{
            printf("%d, ",array[i]);
        }
    }
    return 0;
}
#包括
int main(){
int数组[20];
int i;
printf(“输入要存储在数组中的值>”;
对于(i=0;i您可以使用
scanf()
函数来实现这一点

scanf函数的声明如下:

int-scanf(常量字符*格式,…)

这意味着在使用
scanf()
函数时,可以指定接收的输入格式。与
printf()
函数类似,例如
scanf(“%c”,&character)
,可以用于从用户处获取字符输入。
scanf()
函数返回成功读取的次数

注意:您可以检查
scanf()
函数是否成功读取了预期数据,例如:

if (scanf("%d",&intNum)==1){
    //all is ok, proceed
}
else{
    //EOF or conversion failure
}
同样,如果您正在扫描多个变量,则可以使用
if(scanf(“%d%d”)、&intNum1和&intNum2)==2
。您可以使用以下任一项(及更多项)来读取和存储不同类型的输入,而不是
%c

其中一些:

c
:字符
d
:十进制整数
f
:浮动
o
:八进制整数
s
:字符串
等等……

此外,例如,如果使用
scanf(“%d%f”、&integerNum、&floatNum)
,则将以int float(int SPACE float)格式读取用户输入,并将值分别存储到integerNum和floatNum变量中。
“%d%f”
之间的空格字符是格式的一部分

第二个参数(
&character
在我的例子中)是将值存储到中的地址
scanf()
。有关
scanf()
的详细信息,请参见。可以在循环中使用
scanf()
将用户输入存储到数组中

以下是一个工作示例:

#include <stdio.h>

int main(){
    int array[20];
    int i;
    printf("Enter value to be stored in array> ");
    for (i=0;i<20;i++){
        //printf("Enter value to be stored in array[%d]> ",i);
        scanf("%d,",&(array[i]));
        //scanf("%d,",(array+i));
    }
    for (i=0;i<20;i++){
        if (i==19){
            printf("%d\n",array[i]);
            //printf("%d\n",*(array+i));
        }
        else{
            printf("%d, ",array[i]);
        }
    }
    return 0;
}
#包括
int main(){
int数组[20];
int i;
printf(“输入要存储在数组中的值>”;

对于(i=0;i您能添加到目前为止您已经尝试过的内容吗?请参阅此为您的问题创建示例。谢谢!看起来您正在尝试使用
scanf
在一个只有一条语句的数组中进行阅读。也许此问题和答案可能会帮助您:您能添加到目前为止您已经尝试过的内容吗?请参阅此为您创建示例r您的问题。谢谢!看起来您正试图使用
scanf
以一个数组的形式阅读一条语句。也许这个问题和答案可能会对您有所帮助:如果您需要帮助,请告诉我。这是我在这个网站上发布的第一个答案。希望不是太糟糕。您的第一个答案做得很好,但有两个改进。
%d%f“
将读取“任意数量的空格
int
任意数量的空格
float
”(数字转换说明符忽略前导空格),并且大多数导入,在使用
scanf
时,必须始终检查返回并处理三种情况(1)用户通过生成手动
EOF
来取消输入;(2)出现匹配或输入失败,且输入缓冲区中的字符未读;以及(3)返回值与转换说明符的数量相匹配--表示转换良好。新用户需要该信息。感谢您提供更多信息。我试图使我的答案尽可能简单,因为op对C来说是非常新的。我应该使用错误检查更新我的答案吗?“
之间的空格字符%d%f”“
是格式的一部分。“mis Lead as
%d%f”
也会这样做。回答得好。我的一点反馈是,行断了