我正在开发一个数据库基础项目 考虑一个结构
struct student
{
int rollno;
char full_name[20];
char address[50];
char birthmark[50];
};
如何接受此输入
rollno 6
名字john snow
解决北方的冬季问题
胎记伤口遍布全身
我尝试了什么:
我试过了
scanf("%s",stringname)
,scanf("%[^\n]s",stringname)
,gets(stringname)
,
fgets(buffer,size,stdin)
fflush(stdin)
ffush(stdin)
。
总有一些错误。
到目前为止,fgets工作得很好,但我读过java
是一种错误的做法。
那么应该一个接一个地同时输入字符串(带空格)的方法。
答案 0 :(得分:2)
最好的方法是,从fgets()
输入读取整行,然后在填充结构成员之前进行解析和验证。流程图可能看起来像
fgets(into the buffer) and the return is not NULL
if (integer)
store into rollno;
else
copy the input string into corresponding member variable.
是的,fflush(stdin)
会调用undefined behavior,don't use that。
(没有错误的代码和mcve,我们可以做的所有帮助)