C标准要求在使用字符串函数时要包含头文件string.h,在使用字符函数时包含头文件 ctype.h
1.puts(字符数组)-----输出字符串
将一个字符串或字符数组指针输出到终端,在输出时将字符串结束标志 '\0' 转换成 '\n' ,即输出完字符串后换行。
而且puts函数输出的字符串中可包含转义字符(也就是说puts会遍历执行字符串中每个字符)。
#include<stdio.h>#include<string.h>int main(){char str[]={"china beijing"};char str1[]={"china\nbeijing"};char str2[]={"china\0beijing"};puts(str);puts(str1);puts(str2);return 0;}
输出结果:
2.gets(字符数组)-----输入字符串
将字符串从终端赋值到字符数组,并得到字符数组的起始地址为函数的返回值。
将字符串送给指定字符数组,会送给 输入内容+‘\0’(结束符)。
#include<stdio.h>#include<string.h>int main(){char str[]={"china beijing"};char *temp;temp=gets(str);puts(str);//输出字符数组或字符数组指针 puts(temp);printf("%d\n",sizeof(str));//系统会自动为赋值的字符数组加'\0' printf("%d",strlen(str));return 0;}
输出结果:
3.strcat(字符数组1,字符数组2)-----字符串连接
将字符数组中字符连接起来,把字符数组2中内容顺次传递到字符数组1中,并返回数组1的地址
数组1必须足够大才能容纳连接后的新字符串
连接前两个字符串的后面都有 '\0' ,连接时将字符串1后面的 '\0' 取消,只在新生成的串后保留 '\0'
#include<stdio.h>#include<string.h>int main(){char str[]={"china beijing"};char str1[]={"janpan"};char *temp;temp=strcat(str,str1);printf("%s\n",temp);printf("%d\n",strlen(str));return 0;}
输出结果:
4.strcpy(字符数组1,字符数组2) 和strncpy(字符数组1,字符数组2,int)-----字符串复制
strcpy将字符数组2整个复制到字符数组1中
strcpy将字符数组2的内容加上 '\0'一起复制到数组1中,但其余字符还是数组1原有字符,且默认 '\0' 为空
#include<stdio.h>#include<string.h>int main(){char str[]={"chinaabeijing"};char str1[]={"janpan"};char *temp;temp=strcpy(str,"qwert");printf("%s\n",temp);printf("%d\n",strlen(str));printf("%d\n",sizeof(str));for(int i=0;i<sizeof(str);i++){printf("%c",str[i]);}return 0;}
输出结果:
strcpy(str1,str2):将str2中内容复制到str1中
strncpy(str1,str2,n):将str2中前n位送给str1中
共同的是:str1数组必须足够大,能够承载str2数组复制给str1的内容
不同的是:strncpy只会把 str2 中的前 n 位给 str1,不会把str2的前 n 位的内容加上 '\0'一起复制到数组1中
#include<stdio.h>#include<string.h>int main(){char str[]={"chinaabeijing"};char str1[]={"janpan"};char *temp;temp=strncpy(str,"qwert",2);printf("%s\n",temp);printf("%d\n",strlen(str));printf("%d\n",sizeof(str));for(int i=0;i<sizeof(str);i++){printf("%c",str[i]);}return 0;}
输出结果:
5.strcmp(字符数组1,字符数组2)-----字符串比较大小
将每位按照 ASCLL码大小去比较,并返回 int 值
intstrcmp(*str1,*str2):
(1)str1==str2,函数==0
(2)str1>str2,函数==正数
(3)str1<str2,函数==负数
6.其他常用函数
int strlen(*str)-----测量字符数组的字符串长度
char * strlwr(*str)-----将字符数组中字符串转化为小写
char * strupr(*str)-----将字符数组中字符串转化为大写
案例:
#include<stdio.h>#include<string.h>int main(){char str[]={"ASDQijing"};char *temp=strlwr(str);printf("%s\n",strlwr(str));printf("%s",temp);return 0;}
char * strchr(char *str,int ch)-----找出str字符串中第一次出现字符ch的位置的指针
char * strstr(char *str1,char *str2)-----找出str2字符串在str1字符串中第一次出现位置,并返回指针