
1.字符数组定义char 数组名[长度]int main() { char str1[10]; str[0]a;//初始化 char str2[10]{a,b,d};//初始化 char str3[10]“adf”;//初始化str3是字符串 return 0; }2.字符串用“”包括的字符序列可能是0个或者多个字符字符串末尾有‘\0’作为结尾标记有两种形式的字符串1.用“”包括2.有‘\0’的字符数组int main() { char str1[10]; str1[0]a;//初始化 char str2[10]{a,b,d};//初始化 char str3[10]“adf”;//初始化str3是字符串 printf(%s,str1);//str1不是字符串%s用于输出字符串 printf(%s,str2);//str2是字符串初始化一部分剩余部分是0也是‘\0’ //0的几种表示方式0‘\0’,false,NULL printf(%s,str3);//是字符串 return 0; }int main() { char str1[10];//是字符数组不是字符串 char str2[10]abcde;//是字符数组是字符串长度为6 char str3[]abcde;//是字符数组是字符串长度为6 char str4[]{a,b,c,d,e};//是字符数组不是字符串长度为5 char str5[10]{a,b,c,d,e};//是字符数组是字符串长度为6 const char* str6abcde//是字符串常量不是字符数组 return 0; }字符数组输出利用循环一个一个进行输出。字符串利用%s直接进行輸出。字符数组有可能是字符串情况1:以双引号初始化 情况2初始化一部分剩余部分是0也是‘\0’。int main() { char str1[15]{I, ,a,m, ,a, ,s,t,u,d,e,n,t,.};//长度是15没有‘\0’,不是字符串不可以进行直接输出 char str2[16]{I, ,a,m, ,a, ,s,t,u,d,e,n,t,.};//是字符串长度是16 printf(%s\n,str2); }int main() { //字符串输出 char str[5][6]{ * , * * ,* *, * * , * }; for(int i0;i5;i) { printf(%s\n,str[i]); } return 0; }3.字符串和字符数组的使用//读取5个字符字符数组 int main() { char str[5]; for (int i 0;i 5;i) { scanf(%c, str[i]); } for (int i 0;i 5;i) { printf(%c, str[i]); } return 0; }//字符串读取5个字符读取6个字符越界 int main() { char str[6]; scanf(%s, str);//strstr printf(%s\n, str); return 0; }4.字符串处理函数//字符串处理函数 //1.printf(%s\n,str); //2.puts 输出一个字符串并自动加\n //gets 已经废除 //1.scanf 有越界问题,不能读取空格多个字符串用空格分割 //2.fgets 有限制越界的参数,多了的部分被丢弃可以读取空格多个字符串用换行分割 //3.scanf_s 有限制越界的参数多了全部丢弃int main() { char str[100] abcd xyz; //gets(str); //fgets(str,10,stdin);//最多读取9个字符 scanf_s(%s,str, 10);//最多读取9个字符 puts(str); return 0; }strcpy 字符串复制拷贝#includestring.h int main() { char str1[] abcde; char str2[10]; strcpy(str2, str1);//注意顺序 printf(str2%s, str2); return 0; }strcat 字符串链接注意1.两个都必须是字符串 2.被链接的对象长度要够#includestring.h int main() { char str1[20] abcde; char str2[10]xyz; strcat(str1, str2);//注意顺序 printf(str1%s, str1); return 0; }strcmp 字符串比较返回一个整数实现大写字母转小写字母//大写字母转小写 //strlwr strupr 已经废除 //自己实现 #includectype.h void Mystrlwr(char str[]) { for (int i 0;str[i] ! \0;i) { //if(str[i]A str[i]Z)//不要这么写 if (isupper(str[i])) { str[i]tolower(str[i]); } } } int main() { char str[] ASxssss; Mystrlwr(str); printf(%s\n, str); return 0; }//输入一行字符判断单词的个数 //最优思路当前字母是是字符下一个字母不是字符 #includectype.h int main() { char str[100]; fgets(str, 100, stdin); //printf(%s\n, str); int count 0; for (int i 0;str[i] ! \0;i) { if (isalpha(str[i]) !isalpha(str[i1])) count; } printf(%d\n, count); return 0; }//三个字符串的最大值 #includestring.h int main() { char str[3][20]; char max[20] ; int i 0; for (i 0;i 3;i) { fgets(str[i], 20, stdin);//用换行符分割 } for (i 0;i 3;i) { if (strcmp(str[i], max) 0) strcpy(max, str[i]); } printf(max%s\n, max); return 0; }