0

我正在尝试下面的代码。但是当我输入整数时,程序不要求输入字符。程序执行 printf 行。我应该如何避免上述问题?

#include <stdio.h>
void main()
{
    char a[5];
    int p;
    printf("data\n");
    scanf("%d",&p);
    scanf ("%c",&a);
    printf("--> %c %d\n",a,p);
} 
4

1 回答 1

1

像这样放一个空格scanf

scanf (" %c",&a);
        ^-------note

这样尾随的换行符就被吃掉了。一旦你在给出整数输入后按回车键 - 缓冲区中有一个尾随换行符,第二次调用将scanf读取该字符。同样main按照 ISO 应该返回int

这个说法也是不正确的:

char a[5];
printf("--> %c %d\n",a,p);

您正在读取一个字符并打印一个数组。你只需要:

char a;
printf("--> %c %d\n",a,p);

如果要读取(或输入)字符数组,请使用fgets. 对于char a[5]做类似的事情:

fgets (a, 5 , stdin)

由于 fgets 是缓冲区安全的。

于 2013-11-13T14:42:22.443 回答