如何扫描1个以上的整数?

时间:2019-01-04 16:47:25

标签: c

我刚刚开始在学校学习C语言,但是老师坚持要在我希望用户添加两个以上整数的情况下使用此语言:

但是我感觉这是不正确的,因为计算机如何知道哪个号码是哪个号码?

int main ( )
{
    int a, b;
    printf( "put two numbers" );
    scanf( "%d", &a, &b );

    return 0;
}

3 个答案:

答案 0 :(得分:1)

读取两个数字:

if (scanf("%d %d", &a, &b) == 2)
    printf("a = %d, b = %d\n", a, b);
else
    fprintf(stderr, "failed to read two integers\n");

如果要读取的数字数量是可变的,则逐个循环读取它们

答案 1 :(得分:1)

每个参数都需要一个转换说明符:

scanf( "%d %d", &a, &b );

您应该检查scanf的结果,以确保您成功阅读了两项:

if ( scanf( "%d %d", &a, &b ) == 2 )
{
  // process a and b
}
else
{
  // at least one entry was not an integer, print error message and exit
}

如果您想让用户有机会正确输入两个数字,请使用循环,并在再次提示之前清除所有未读的输入:

while ( scanf( "%d %d", &a, &b ) != 2 )
{
  // clear out input stream up to the next newline:
  while ( getchar() != '\n' )
    ; // empty loop

  printf( "Error on input, try again: " );
}

答案 2 :(得分:1)

您需要为每个变量使用一种格式,但是在您的问题中,显然缺少一种格式):

foo-2.0

另一种方法是将值读入数组,如下所示:

if ( scanf( "%d %d", &a, &b ) != 2 )
{
    printf( "Error,s canf()\n" );
    exit( EXIT_FAILURE );
}

输出:

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

#define SIZE 2

int main ( void )
{
    int arr[SIZE];

    for ( int i = 0 ; i < SIZE ; i++ )
    {
        printf( "Give a number:> " );
        if ( scanf( "%d", &arr[i] ) != 1 )
        {
            printf( "Error,scanf()\n" );
            exit( EXIT_FAILURE );
        }
    }

    for ( int j = 0 ; j < SIZE ; j++ )
    {
        printf( "ARR[%d] = %d\n",j, arr[j] );
    }
}