使用scanf功能

时间:2013-11-13 14:41:34

标签: c scanf

我正在尝试下面的代码。但是当我输入整数时,程序不会要求字符。程序执行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);
} 

1 个答案:

答案 0 :(得分:1)

scanf中添加一个空格,如下所示:

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

这样尾随的换行就被吃掉了。在给出整数输入后按Enter键 - 缓冲区中有一个尾随的换行符,第二次调用scanf读取。根据ISO,main也应返回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是缓冲安全的。