c语言 - 为什么我的程序不允许我输入 b?



我想输入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标准支持。请使用scanffgets

至于你的问题,那么在scanf呼叫之后

scanf("%i", &a);

输入缓冲区包含新的行字符'n',对应于按下的回车键。下面的gets调用通过遇到新的行字符读取空字符串。

代替使用getswrite

scanf( " %4[^n]", b );

注意格式字符串中的前导空格。它允许跳过空白字符,例如新的行字符'n'。调用scanf可以读取最大长度为4的字符串。如果你想读取一个更大的字符串,那么放大数组b和格式字符串中的字段宽度说明符。

相关内容

  • 没有找到相关文章

最新更新