C语言输入字符:如何正确读取并存储空格分隔的字符?
在C语言中,使用 scanf 函数读取用户输入时,需要特别注意如何处理空格字符。以下代码片段执行后,当用户在键盘输入'A'(空格)'B'并按回车后,能正确读入并分别存储在 c1,c2 中的是:
A. `char c1, c2;
scanf('%c %c', c1, c2);`
B. `char c1, c2;
scanf('%c%c', &c1, &c2);`
C. `char c1, c2;
scanf('%c', &c1);
scanf('%c', &c2);`
D. `char c1, c2;
scanf('%c', &c1);
getchar();
scanf('%c', &c2);`
E. `char c1, c2;
c1 = getchar();
c2 = getchar();`
答案:E
解析:
-
选项 A:
scanf('%c %c', c1, c2);这种写法错误,因为scanf函数需要使用取地址符&来获取变量的内存地址。 -
选项 B:
scanf('%c%c', &c1, &c2);这种写法错误,因为scanf函数遇到空格时会停止读取,导致第一个%c只读取了字符 'A',第二个%c读取了空格,而字符 'B' 则被留在输入缓冲区中,无法被读取。 -
选项 C:
scanf('%c', &c1);和scanf('%c', &c2);这种写法错误,因为第一次scanf读取字符 'A' 后,空格字符仍然留在输入缓冲区中,第二次scanf会直接读取空格,导致字符 'B' 无法被读取。 -
选项 D:
scanf('%c', &c1);读取字符 'A',getchar();读取空格,最后scanf('%c', &c2);读取字符 'B'。这种写法能够正确读取字符。 -
选项 E:
getchar();可以直接读取输入缓冲区中的第一个字符,包括空格,因此能够正确读取 'A' 和 'B'。
结论: 使用 getchar() 函数可以解决 scanf 函数在处理空格时的限制,更适合读取包含空格的字符序列。
原文地址: https://www.cveoy.top/t/topic/pkoU 著作权归作者所有。请勿转载和采集!