前言:现在面临的c初学阶段,在刷题的过程中遇到很多关于字符串的输入问题, 在听了一些网课和找了一些后想自己总结一下, 希望有大佬能帮我指出文中内容的错误。(大一新生)
注释:下面的例子中的字符串数组都用arr表示。
一、scanf("%s", arr)
图一中的代码是输入一段字符串到字符串数组arr中并输出,此例中的 scanf("%s", arr) 正是起到了输入字符串的作用, scanf("%s", arr) 的局限性在于不能完整读取含有空格的字符串,如:当输入 “hello world” 时图一中的程序只能读取到 “hello” 而后面的空格和 “world” 无法一次全部读取。
//图一
#include <stdio.h>
int main() {
char arr[100] = {0};
scanf("%s", arr);
printf("%s\n", arr);
return 0;
}
如果要完整读取 “hello world” ,可以如图二中的程序所示创建两个字符串数组来分别保存 “hello” 和 “world” 。但也存在缺陷,就是 “hello world” 中的空格无法打印,这正与 scanf("%s", arr) 的特点有关 它根本不会读入空格,就算你开始输入时时只输入空格,当按下回车后, scanf("%s", arr) 并不会读取你的空格,而是继续等待你输入字符串。用图二程序输入 “hello world” 后, scanf("%s", arr) 读取了 “hello” 而遇到空格后结束读取,但并未从健盘缓冲区中跳过空格(标记句一),所以 scanf("%s", arr1) 从空格开始读取,但由于无法读取空格,最终只读取 “world” 。
//图二
#inclu