在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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录