如何读取C中不同数量的整数输入?
我将获得三行输入。第一行给我2个整数,第三行给我1个整数。但是第二行可以给我任何数量的整数,范围在1到100之间。例如,输入可以是:如何读取C中不同数量的整数输入?,c,input,C,Input,我将获得三行输入。第一行给我2个整数,第三行给我1个整数。但是第二行可以给我任何数量的整数,范围在1到100之间。例如,输入可以是: 2 1 5 6 1 9 2 10 10 4 5 6 9 或者可以是: 2 1 5 6 1 9 2 10 10 4 5 6 9 对于固定数量的整数,我可以将第二行整数输入读取到整数数组中,但对于不同数量的整数,我不能这样做。我想,在这种情况下,我应该使用while循环,当scanf()找到新行时,该循环将中断。我该如何编写代码 使用fgets()或getli
2 1
5 6 1 9 2
10
10 4
5 6
9
或者可以是:
2 1
5 6 1 9 2
10
10 4
5 6
9
对于固定数量的整数,我可以将第二行整数输入读取到整数数组中,但对于不同数量的整数,我不能这样做。我想,在这种情况下,我应该使用while循环,当scanf()
找到新行时,该循环将中断。我该如何编写代码
fgets()
或getline()
将行读入缓冲区()'\n'
的空白,如果找到,则退出循环。然后调用strtol()
或sscanf()
读取1号。检查该函数的返回值是否存在错误fgets()
或getline()
将行读入缓冲区()'\n'
的空白,如果找到,则退出循环。然后调用strtol()
或sscanf()
读取1号。检查该函数的返回值是否存在错误事实上,我是一个编程新手,对大多数函数一无所知。我知道的唯一字符串函数是
strlen()
和strcmp()
。我的i\o函数知识仅限于printf()
和scanf()
无论如何,我用这种方式解决了我的问题:
int a[101];
int i, num;
char ch;
for (i = 0; i < 101; i++)
a[i] = 0;
while (1)
{
scanf("%d%c", &num, &ch);
i = num;
a[i] = num;
if (ch == '\n')
break;
}
inta[101];
int i,num;
char ch;
对于(i=0;i<101;i++)
a[i]=0;
而(1)
{
scanf(“%d%c”,&num,&ch);
i=num;
a[i]=num;
如果(ch='\n')
打破
}
这管用!
num
的值必须等于i
的值,因为我的程序需要它。我实际上是一个编程新手,不知道大多数函数。我知道的唯一字符串函数是strlen()
和strcmp()
。我的i\o函数知识仅限于printf()
和scanf()
无论如何,我用这种方式解决了我的问题:
int a[101];
int i, num;
char ch;
for (i = 0; i < 101; i++)
a[i] = 0;
while (1)
{
scanf("%d%c", &num, &ch);
i = num;
a[i] = num;
if (ch == '\n')
break;
}
inta[101];
int i,num;
char ch;
对于(i=0;i<101;i++)
a[i]=0;
而(1)
{
scanf(“%d%c”,&num,&ch);
i=num;
a[i]=num;
如果(ch='\n')
打破
}
这管用!
num
的值必须等于i
的值,因为我的程序需要它。我该如何编码?
…DV磁铁。如果一行中整数的数量有一个合理的小上限,那么您可以声明一个足够大的数组来容纳所有整数<代码>整数[100]使用的内存量可以忽略不计。@您提供的链接解决了我的问题。如何编写该代码?
…DV magnet。如果一行中整数的数量有一个合理的小上限,那么您可以声明一个足够大的数组来容纳所有整数<代码>整数[100]代码>使用的内存量可以忽略不计。@CoolGuy您提供的链接解决了我的问题。注意:1)for(i=0;i<101;i++)a[i]=0代码>在a[]
之外写入,这是未定义的行为2)scanf(“%d%c”,&num,&ch)代码>不检查scanf()
的结果,因此代码不知道num
,ch
的值是否有效。@chux感谢您指出这些问题。我修正了你提到的第一件事。接下来,我没有检查num
和ch
是否有效,因为这是竞争性编程问题,我们只得到整数输入。然而,你的洞察力在现实生活问题中会很有用。我很感激。@chux我根据你的建议修复了它。注意:1)for(I=0;I<101;I++)a[I]=0代码>在a[]
之外写入,这是未定义的行为2)scanf(“%d%c”,&num,&ch)代码>不检查scanf()
的结果,因此代码不知道num
,ch
的值是否有效。@chux感谢您指出这些问题。我修正了你提到的第一件事。接下来,我没有检查num
和ch
是否有效,因为这是竞争性编程问题,我们只得到整数输入。然而,你的洞察力在现实生活问题中会很有用。我很感激。@chux我按照你的建议把它修好了。