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