c总结 使用scanf输入字符串问题

  学习c时经常遇到字符串的输入问题,使用scanf输入时总是会或多或少的遇到错误,总结一下我遇到过的情况

同时输入字符和字符串

  刚开始编写时可能大多数会这样写:

   (ch1为字符类型的数组,数组名即数组的首地址,所以不要&)

 当输入  字符  回车时会出现下面情况:

还没有输入字符串输入就结束了。当我们需要调用scanf输入的时候,输入的字符送到键盘缓冲区,然后scanf从中读取所规定的字符,例如 输入格式为%d,输入为777a2,实际上输入进去的时777,输入77 777,实际上输入进去的是77,因为空格和回车也会被scanf认为是字符。

 当我们输入c回车时,scanf从缓冲区把c提走赋予ch,但回车还在缓冲区并未提走,输入字符串时因为回车也是字符所以被赋予给ch1。

使用scanf输入可以这样做:

1.

结果是:

c总结 使用scanf输入字符串问题_第1张图片

getchar() 是从控制台接收字符,注意只会接收一个字符,此时回车被getchar提走了

2.

结果是:

常用的是这两种方式,当然也可以直接使用gets()来输入字符串,它会把回车一起提走但不会把回车输入数组里,也可以使用fflush(stdin),是将缓冲区清空。

 

你可能感兴趣的:(c总结 使用scanf输入字符串问题)