我正在做我的作业,这是我碰到的问题。在作业中,它表示中间首字母的输入值应为“ L. A.”。但是,一旦我运行程序,它将在同一行上打印一些printf函数,而跳过scanf函数。我已经讨论了有关“%c”问题的许多主题,但是仍然无法使我的程序正常运行。一些变量来自.h文件。实际的任务更大,但是却是重复很多,所以我认为如果我想出办法解决这个问题,我将能够最终完成任务。
type
输出(我已突出显示输入值):
color
答案 0 :(得分:1)
%s
格式说明符读取由空格终止的字符序列。当您输入L. A.
时,只有L.
被读入middleInitial
,因为它在空白处停止读取,并且A.
被留在输入缓冲区中。在下一个scanf
上,它立即读取那些缓冲的字符,因此不会停止提示任何内容。
处理此问题的最简单方法是在输入L.A.
时留出空格。如果要支持空格,您将希望完全摆脱scanf
并使用fgets
一次读取所有内容。请注意,fgets
也会读入尾随的换行符,因此您需要将其删除。