黑马程序员——C语言基础 字符串
(以下内容是对黑马苹果入学视频的个人知识点总结)
(一)字符串
1>字符串是由多个字符组合在一起形成的
2>初始化
char a[] = “123”; 和 char a [] = {‘1’,’2’,’3’};
3>在字符串中\0的作用是很大的
①字符串结束的标记
②printf("%s", name2);
会从name2这个地址开始输出字符,直到遇到\0为止
1 #include <stdio.h> 2 3 int main() 4 { 5 char name[] = "itc\0ast"; 6 7 char name2[] = {'o', 'k'}; 8 9 //printf("%s\n", name2); 10 11 printf("%s\n", &name2[1]); 12 13 return 0; 14 }
#include <string.h> #include <stdio.h> // 可读性 -> 性能 -> 精简(重构) int char_contains(char str[], char c); int main() { //int result = char_contains("itc8ast", '8'); char name[] = "itcast"; int result = char_contains(name, 'o'); printf("%d\n", result); return 0; } // "itc" '7' int char_contains(char str[], char c) { int i = -1; /* i 3 str[++i] 'c' c '7' */ // 1.遍历整个字符串 while ( str[++i] != c && str[i] != '\0' ) ; //return str[i] == '\0' ? 0 : 1; return str[i] != '\0'; }
(二)字符串数组
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" };
#include <stdio.h> int main() { char name[] = "jack"; char name1[] = "rose"; char name2[] = "jim"; char name3[] = "jake"; char names[2][10]= {"jack", "rose"}; //printf("%s\n", names[0]); //printf("%c\n", names[0][3]); char names2[2][10] = { {'j', 'a', 'c', 'k', '\0'}, {'r', 'o', 's', 't', '\0'} }; return 0; }