☰
字符数组和字符串
2026/10/13 7:04:04 网站建设 项目流程

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* str6="abcde"//是字符串常量,不是字符数组 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 i=0;i<5;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);//&str=str 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 字符串复制(拷贝)

#include<string.h> int main() { char str1[] = "abcde"; char str2[10]; strcpy(str2, str1);//注意顺序 printf("str2=%s", str2); return 0; }

strcat 字符串链接

注意1.两个都必须是字符串 2.被链接的对象长度要够

#include<string.h> int main() { char str1[20] = "abcde"; char str2[10]="xyz"; strcat(str1, str2);//注意顺序 printf("str1=%s", str1); return 0; }

strcmp 字符串比较,返回一个整数

实现大写字母转小写字母

//大写字母转小写 //strlwr strupr 已经废除 //自己实现 #include<ctype.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; }
//输入一行字符,判断单词的个数 //最优思路:当前字母是是字符,下一个字母不是字符 #include<ctype.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[i+1])) count++; } printf("%d\n", count); return 0; }
//三个字符串的最大值 #include<string.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; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询