C语言字符串的储存、初始化、输出与输入
上节讲了数组的相关内容。C/C++数组
本节介绍C语言的字符串。
-
为什么要讲C语言的字符串。
C语言的字符串也就是char类型的数组,在开发过程中经常使用。 -
区别:
"laowang";
C:”laowang\0"
C++: "laowang"
C语言比C++多了个结束符'\0'
; -
初始化:
#include <iostream>
#include <string>
using namespace std;
int main(){
//初始化 很麻烦, 不常用。
char name[32];
name[0] = 'l';
name[1] = 'a';
name[2] = 'o';
name[3] = 'w';
name[4] = 'a';
name[5] = 'n';
name[6] = 'g';
name[7] = '\0';
//等效于 常用
char name1[32] = "laowang";
//第三种
char name2[] = "laowang";// char name2[8] = "laowang"
return 0;
}
-
三种初始化方法:
- 第一种:一个字符一个字符的初始化。不建议。
- 第二种:对整个数组进行初始化。
- 第三种:不确定长度初始化。
-
注意: 当字符数组的长度以后不会修改时可以使用 第三种情况。
-
C语言字符串的输入输出:
#include <iostream>
#include <string>
#include <string.h>
#include <stdio.h>
using namespace std;
int main(){
//和C++的字符串输入规则一样
char name[32];
//下面两种输入方式相同
//\n回车的转义字符,相当于回车
//输入 小王\n -> 输入缓冲区: 小王\n -> \n, 最后缓冲区还剩下个\n留给后面的gets();
scanf_s("%s", name, sizeof(name));
//cin >> name;
//如果想要输入并读取空格的话使用gets();
//接收上面的\n(回车),直接结束,name是一个空串。
gets_s(name); //读一行,直到遇到回车。输入 小 王
//下面两种输出方式相同
printf("%s\n", name);
cout << name << endl;
cout << "name的长度为:" << strlen(name) << endl;
return 0;
}
输入:小王
输出结果:
name的长度为:0
-
上面由于第一次输入后键盘缓冲区剩一个\n(回车),gets_s只能收到回车符结束,为空串。
-
改进方法,在第二次输入之前,清空键盘缓冲区。
//在gets_s()前面加上fflush(stdin);
fflush(stdin);
这样就就可以输入两次了。
本节C语言字符串的介绍就到这里,下节我们介绍bool类型。