可能用多了C++语言吧,现在居然都不熟悉scanf的空格还有这么多意义,惭愧惭愧,也一直对字符和字符串的输入方式比较混淆
代码如下:如不会有回车问题的困扰,也不用加getchar().是由于scanf中的空格可以匹配的是一切空白字符,而且对于格式控制串最前面和最后面的空格,可以将缓冲区连续的空白字符当做一个匹配掉!
void main()
{
char c;
while (1) {
printf("输入Y:");
scanf(" %c", &c);
if (c != 'Y') break;
printf("----\n");
}
printf("end\n");
system("pause");
}
C语言中scanf()函数提供的“%[]”格式串可以用来进行多个字符的输入,并对结束符进行自定义。 对于%[]还可以用^+任意字符(包括 eof)来结束字符串的输入,如%[^EOF]就是直到有EOF 输入,字符串才中止。参考代码:
#include <stdio.h>
void main()
{
char str[100];
scanf("%[^\n]",str);//直到输入回车键,读取才结束,当然不能超过str定义的大小,否则会出错。
// 此命令与gets(str)效果一样。
printf("%s\n",str);
}