如何读取C中不同数量的整数输入?

如何读取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个整数。但是第二行可以给我任何数量的整数,范围在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()
    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我按照你的建议把它修好了。