刚刚开始在我的 CS 221 类(class)中学习 C/C++。
这是我的代码的开头:
int main()
{
int id;
char name[100];
double wages;
printf("Enter employee's id: ");
scanf("%4i", id);
printf("Enter employee's full name: ");
scanf("%99[^\n]",name);
printf("Enter gross salary for %s :",name);
return 0;
}
我在 C 语言中的字符数组、标准输入和缓冲区方面遇到了麻烦。为什么上面的代码跳过用户输入名称?我需要在那里冲洗吗?也无法真正让它发挥作用。
最佳答案
不确定为什么使用
scanf("%4i", id);
但是尝试一下:
scanf("%d", &id );
这修复了 %4i
格式的问题,并将其替换为“十进制整数”格式的 %d
。
这也解决了 , id);
的问题,因为这样写,将不允许存储 id,并且肯定会崩溃。
如果您输入的数字因太大而崩溃,可能会检查您的数据类型 int
的边界,这将是特定于平台的。
同时更改:
scanf("%99[^\n]",name);
至:
scanf("%s\n",name);
这将获取用户通过 scanf 输入的数据,并将其解释为“字符串”,并将其正确放置在 name
中。
关于c - C 中的多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46652632/