void main()
{
char className[100] = { 0 };
char windowName[100] = { 0 };
printf("请输入窗口的标题名:\n");
int n2 = scanf("%[^\n]", windowName);
printf("请输入窗口的类名:\n");
//getchar(); //不加这一句classname为空
int n1 = scanf("%[^\n]", className);
windowDoubleCircle(className, windowName);
}
为什么scanf使用正则表达式,[^\n],将回车当作结束符后,第二个scanf无法正常工作呢?
windowName可以得到正确的结果,遇到回车结束
但是第二个就不行了,一直为空
我自己的猜测是输入第一个字符串时的回车被第二个scanf直接读入了,然后就直接结束。
加入getchar后果然正常了。
但是这里我就很困惑了,不用正则表达式不也是以回车(或者空格)来结束吗,为什么正常的scanf连用能够正常工作(这里指输入一个字符串,然后回车,然后再输入一个字符串)呢?