C标准要求在使用字符串函数时要包含头文件string.h,在使用字符函数时包含头文件 ctype.h
函数名 | 函数原型 | 功能 | 返回值 | 包含文件 |
---|---|---|---|---|
isdigit | int isdigit (int ch) | 检验ch是否是数字(0~9) | 是,返回1 不是,返回0 | ctype.h |
isxdigit | int isxdigit (int ch) | 检验ch是否是16进制字符(0~9,a~f) | 是,返回1 不是,返回0 | ctype.h |
isalnum | int isalnum (int ch) | 检验ch是否是字母或数字 | 是,返回1 不是,返回0 | ctype.h |
isalpha | int isalpha (int ch) | 检查ch是否字 母 | 是,返回1 不是,返回0 | ctype.h |
islower | int islower (int ch) | 检查ch是否小写 | 是,返回1 不是,返回0 | ctype.h |
isupper | int isupper (int ch) | 检查ch是否大写 | 是,返回1 不是,返回0 | ctype.h |
|
| |||
iscntrl | int iscntrl (int ch) | 检查ch是否控制字符 | 是,返回1 不是,返回0 | ctype.h |
ispunct | int ispunct (int ch) | 检查ch是否标点字符,除字母、数字和空格以外的所有可打印字符 | 是,返回1 不是,返回0 | ctype.h |
isprint | int isprint (int ch) | 检查ch是否可打印字符 | 是,返回1 不是,返回0 | ctype.h |
isgraph | int isgraph (int ch) | 检查ch是否可打印字符,不包括空格 | 是,返回1 不是,返回0 | ctype.h |
tolower | int tolower (int ch) | 将ch字符转化为小写字符 | 返回char型字符 | ctype.h |
toupper | int toupper (int ch) | 将ch字符转化为大写字符 | 返回char性字符 | 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 值
int strcmp(*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字符串中第一次出现位置,并返回指针