printf("Type first name:"); scanf("%[^\n]%*c",msg);
printf("Type last name: "); scanf("%[^\n]%*c",aux2);
....
printf("Type adress:"); scanf("%[^\n]%*c",aux2);
....
printf("Type phone:"); scanf("%[^\n]%*c",aux2);
我想读一些带空格的字符串。 但扫描这里没有效果.. 运行之后,我得到:"输入名字:输入姓氏:输入地址:输入电话:") 另外,我在我的代码scanf("%c",& c)`中使用`来读取一些字符...... 这里的问题是什么,为什么我无法阅读这些字符串?
*编辑
答案 0 :(得分:1)
当程序的执行到达您发布的\n
时,似乎stdin
字符(可能来自先前的输入)在输入流(scanf
)中。
scanf("%[^\n]%*c",aux2);
如果它是\n
中的下一个字符并且失败,将不会扫描stdin
。要修复它,只需添加一个
getchar();
在第一个scanf
之前。这将吞噬\n
的结尾stdin
。
答案 1 :(得分:1)
你的问题仍然不明显(无论如何),但是如果你想阅读包含空格的一行文字,fgets
可能是最简单的解决方案。
char buf[100];
fgets(buf, sizeof(buf), stdin);
请注意,fgets在遇到\ n字符时会停止读取,但会将其附加到缓冲区。