1、 字符串
1. 什么是字符串
● 简单的字符串”itcast”
● 一个’i’是一个字符
● 很多个字符组合在一起就是字符串了
2. 字符串的初始化
● char a[] = “123”; 和 char a [] = {‘1’,’2’,’3’};的区别,可以比较大小
● “123”其实是由’1’、’2’、’3’、’\0’组成
● “123”的存储分布
● 字符串的输出”%s”,’\0’是不会输出的
3. \0的作用
● 输出char a[] = {‘o’,’k’};
● 在char a[]前面搞个”mj”
● 输出”mj”
● 再输出a
● char a[] = {‘i’,’t’,’\0’,’c’};
4. 常用字符串处理函数
● strlen(注意中文)
2. 习题
编写一个函数char_contains(char str[],char c),如果字符串str中包含字符c则返回数值1,否则返回数值0
1 #include <string.h> 2 #include <stdio.h> 3 4 // 可读性 -> 性能 -> 精简(重构) 5 6 int char_contains(char str[], char c); 7 8 int main() 9 { 10 char name[] = "itcast"; 11 12 int result = char_contains(name, 'c'); 13 14 printf("%d\n", result); 15 return 0; 16 } 17 18 // "itc" '7' 19 int char_contains(char str[], char c) 20 { 21 int i = -1; 22 23 // 1.遍历整个字符串 24 while ( str[++i] != c && str[i] != '\0' ) ; 25 26 //return str[i] == '\0' ? 0 : 1; 27 return str[i] != '\0'; 28 }
字符串数组
1.使用场合
* 一维字符数组中存放一个字符串,比如一个名字char name[20] = "mj"
* 如果要存储多个字符串,比如一个班所有学生的名字,则需要二维字符数组,char names[15][20]可以存放15个学生的姓名(假设姓名不超过20字符)
* 如果要存储两个班的学生姓名,那么可以用三维字符数组char names[2][15][20]
2.初始化
char names[2][10] = { {'J','a','y','\0'}, {'J','i','m','\0'} };
char names2[2][10] = { {"Jay"}, {"Jim"} };
char names3[2][10] = { "Jay", "Jim" };
1 #include <stdio.h> 2 int main() 3 { 4 char name[] = "jack"; 5 6 char name1[] = "rose"; 7 8 char name2[] = "jim"; 9 10 char name3[] = "jake"; 11 12 char names[2][10]= {"jack", "rose"}; 13 14 printf("%s\n", names[0]); 15 16 printf("%c\n", names[0][3]); 17 18 char names2[2][10] = 19 { 20 {'j', 'a', 'c', 'k', '\0'}, 21 {'r', 'o', 's', 't', '\0'} 22 }; 23 24 25 return 0; 26 }