Scanf跳过功能

时间:2019-03-11 00:25:52

标签: c string char scanf

我正在做我的作业,这是我碰到的问题。在作业中,它表示中间首字母的输入值应为“ L. A.”。但是,一旦我运行程序,它将在同一行上打印一些printf函数,而跳过scanf函数。我已经讨论了有关“%c”问题的许多主题,但是仍然无法使我的程序正常运行。一些变量来自.h文件。实际的任务更大,但是却是重复很多,所以我认为如果我想出办法解决这个问题,我将能够最终完成任务。

type

输出(我已突出显示输入值):

color

1 个答案:

答案 0 :(得分:1)

%s格式说明符读取由空格终止的字符序列。当您输入L. A.时,只有L.被读入middleInitial,因为它在空白处停止读取,并且A.被留在输入缓冲区中。在下一个scanf上,它立即读取那些缓冲的字符,因此不会停止提示任何内容。

处理此问题的最简单方法是在输入L.A.时留出空格。如果要支持空格,您将希望完全摆脱scanf并使用fgets一次读取所有内容。请注意,fgets也会读入尾随的换行符,因此您需要将其删除。