c语言的字符串

时间:2022-03-19 00:23:36

1、 字符串

 
1. 什么是字符串
● 简单的字符串itcast
● 一个i是一个字符
● 很多个字符组合在一起就是字符串了
2. 字符串的初始化
● char a[] = 123;   char a [] = {1,2,3};的区别,可以比较大小
● 123其实是由123\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 }