如何同时进行字符串输入?

时间:2016-07-13 10:45:12

标签: c input scanf stdin fgets

我正在开发一个数据库基础项目 考虑一个结构

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是一种错误的做法。

那么应该一个接一个地同时输入字符串(带空格)的方法。

1 个答案:

答案 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 behaviordon't use that

没有错误的代码和mcve,我们可以做的所有帮助