我想输入a和b的值,a是int, b是str。当我运行我的程序时,我可以输入一个值,但是它忽略了printf()而忽略了b的gets()。
#include<stdio.h>>
int main()
{
int a;
char b[5];
printf("Write a:n");
scanf("%i", &a);
printf("Write b:n");
gets(b);
printf("a = %i, b = %s", a, b);
return 0;
}
最后,它只输出:
a = (valor written), b =
我不知道这有什么问题,也不知道这是不是一种不同的方式来让它工作。我对c很陌生,提前谢谢你。;)
函数gets
是不安全的,不被C标准支持。请使用scanf
或fgets
。
至于你的问题,那么在scanf
呼叫之后
scanf("%i", &a);
输入缓冲区包含新的行字符'n'
,对应于按下的回车键。下面的gets
调用通过遇到新的行字符读取空字符串。
代替使用gets
write
scanf( " %4[^n]", b );
注意格式字符串中的前导空格。它允许跳过空白字符,例如新的行字符'n'
。调用scanf
可以读取最大长度为4的字符串。如果你想读取一个更大的字符串,那么放大数组b
和格式字符串中的字段宽度说明符。