在C中读取整数,直到按下ENTER键

时间:2014-02-27 20:22:00

标签: c arrays scanf enter

我想在数组中读取可变数量的整数,直到用户点击Enter。我通过以下方式成功实现了这一目标:

printf("Give the numbers in the array, then hit ENTER: \n");
scanf("%d", &array[i]);
i++;
no_elements++;

while (scanf(line, "%d", &array[i++])== 1) {
    scanf("%d", &array[i]);
    i++;
    no_elements++;
}

另一方面,我在网站上发现了这个,我不完全理解scanf测试。它的作用是当我按下回车时读数停止。但是,读取的整数数最终等于1(通过添加printf指令检查)。这是为什么?我怎么能这样做呢?

注意:变量i在开头设置为0,no_elements也是如此; line被声明为char行[20]。

3 个答案:

答案 0 :(得分:2)

#include <stdio.h>

int main() {
    int i=0, no_elements = 0;
    int array[16];

    while(no_elements<16){
        char line[32];
        int n;
        printf("Give the numbers in the array, then hit ENTER: \n");
        fgets(line, sizeof(line), stdin);
        if(*line == '\n')
            break;
        if(1==sscanf(line, "%d", &n))
            array[no_elements++]=n;
    }
    printf("%d\n", no_elements);
    return 0;
}

答案 1 :(得分:0)

#include<stdio.h>
void main()
{int a[100],i,sum=0,count=0;
char c;
for(i=0;c!='\n';i++)
{scanf("%d%c",&a[i],&c);
 count++;
}
for(i=0;i<count;i++)
    {sum=sum+a[i];}
printf("%d",sum);
getch();}`

答案 2 :(得分:-1)

在C中: 如果输入是以空格分隔的整数给出的,则在最后输入后如果按下回车键,我们可以读如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ar[10],i=0;
    char c=' ';
    while(c!='\n'){
        scanf("%d%c",&ar[i++],&c);
    }
    while(i>0)
        printf("%d\t",ar[--i]);
 }