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