小编joa*_*imf的帖子

C scanf() 格式的行为

免责声明。我见过很多问题,包括几乎完全相同的代码片段,但似乎没有人回答这个问题。

对于入门级 CS 课程,我们的任务是制作一个简单的程序,该程序接受用户输入的 ID、姓名和年龄并将其保存到文件中。这很简单,我很快就让它工作了。问题是,为了得到一部分,名称输入,正常工作,我不得不“欺骗”我遇到的问题。
有问题的代码片段。

int id, age;
char name[40]={0};
printf("ID: ");
scanf("%i",&id);
printf("Name: ");
scanf("%*c");
scanf("%[^\n]%*c",name);
printf("Age: ");
scanf("%i",&age);
Run Code Online (Sandbox Code Playgroud)

这工作正常。但是这条线让我很恼火;scanf("%*c");它的唯一目的是处理'\n'潜伏在流中的字符,可能来自先前的输入。出于某种原因,我觉得这是作弊,或者如果我必须使用这种解决方法,我做错了什么。任何提示表示赞赏。

c stdin scanf c99

2
推荐指数
1
解决办法
61
查看次数

标签 统计

c ×1

c99 ×1

scanf ×1

stdin ×1