-1

我有这个代码:

#include <stdio.h>
int main()
{
    char vc[5]={1,1,1,1,0};
    int vi[4]={0,0,0,0};

    printf("Reading characters...\n");
    for(int i = 0 ; i < 4 ; i++)
        scanf("%c",&vc[i]);

    printf("Reading numbers...\n");
    for(int i = 0 ; i < 4 ; i++)
        scanf("%d",&vi[i]);

    for(int i = 0 ; i < 4 ; i++)
    printf("%c ",vc[i]);

    printf("\n");

    for(int i = 0 ; i < 4 ; i++)
    printf("%d ",vi[i]);

    printf("\n");

    return 0;
}

在打印“阅读数字”并进入下一个 for 循环之前,我只能输入 2 个字符。为什么迭代只持续 2 步?应该是4。

4

1 回答 1

1

这是因为%c不忽略空格,并且您可能正在回车。尝试:

scanf(" %c",&vc[i]);
       ^

该空间使scanf忽略任何空白。

于 2013-04-06T15:44:27.570 回答