一、字符串简介
- 用字符数组来储存字符串
- 字符串可以看成一个特殊的字符数组,为了跟普通的字符数组区分开来,应该在字符串的尾部添加一个结束的标志‘\0’.
二、字符串的初始化
char a[3] = {'m','j','\0'};
char b[3];
b[0] = 'm';
b[1] = 'j';
b[2] = '\0';
char c[3] = "mj";
char d[] = "mi";
char e[20] = "mj";
当我们使用类似第8行的初始化方式时,系统会自动在字符串尾部加上一个\0结束符
三、字符串的输出
- printf函数:
char a[3] = {'m', 'j', '\0'};
printf("%s", a);
%s表示需要输出一个字符串
记得加上\0结束符,不然后果很严重,会访问到一些垃圾数据
- puts函数:
char a[] = "mj";
puts(a);
puts("lmj");
输出结果:mj lmj
pus函数输出一个字符串后会自动换行
- puts函数一次只能输出一个字符串,printf函数则可以同时输出多个字符串
四、字符串的输入
- scanf函数:
char a[10];
scanf("%s", a);
- scanf函数会从a的地址开始存放用户输入的字符,存放完毕后,系统会在尾部加上一个结束标记\0
- 注意,不要写成scanf("%s",&a),因为a已经代表了数组的地址,没必要再加上&这个地址运算符。
- gets函数:
char a[10];
gets(a);
- 系统会在尾部加上结束标记\0
- gets 一次只能读取一个字符串,scanf则可以同时读取多个字符串
- gets可以读入包含空格,tab的字符串,直到遇到回车为止;scanf不能用来读取空格,tab
五、字符串数组
-
简介:
1 >一维字符数组中存放一个字符串,比如一个名字char name[20] = “mj”
2>多个字符串,需要二维字符数组,char name[15][20],可以存放15个学生的姓名
3>如果要存储两个班的学生姓名,那么可以用三维字符数组char names[2][15][20] -
初始化:
char names[2][10] = { {'J','a','y','\0'}, {'J','i','m','\0'} };
char names2[2][10] = { {"Jay"}, {"Jim"} };
char names3[2][10] = { "Jay", "Jim" };
可以把字符串数组看作是一维数组,它的元素是字符串。字符串数组names由字符串"Jay"和字符串"Jim"构成
详情:https://mjios.cnblogs.com/archive/2013/03/15/2961273.html#label0