目录
前言
长度不受限制字符串函数
strlen函数
使用:
strcpy函数
使用:
strcat函数
使用:
strcmp函数
使用:
长度受限制字符串函数
strncpy函数
使用:
strncat函数
使用:
strncmp函数
使用:
其他字符串函数函数
strstr函数
使用:
strtok函数
使用:
strerror函数
使用:
前言
C语言中对字符和字符串的处理是频繁的,但C语言本身是没有字符串类型的,字符串通常放在常量字符串中,或者字符串数组中,字符串常量适用于那些对他不做修改的字符串函数
长度不受限制字符串函数
strlen函数
注意:size_t 为无符号整形的意思
使用:
引入头文件:include
#include#include void main() { char c[] = "hello";//字符串与字符数组不同,后面默认有' '; char d[] = { 'h','e','l','l','o' }; printf("%dn", strlen(c));//5 printf("%dn", strlen(d));//随机值 }
strcpy函数
- 将source字符串复制到destination上(destination如果不为空串则会被source字符串覆盖),返回值为destination的首地址
- 源字符串必须以' '结束
- 会将源字符串的' '拷贝到目标字符串
- 目标字符串空间必须足够大,以确保能存放源字符串
- 目标空间必须可变
- 学会模拟实现
引入头文件:include
#include#include void main() { char arr1[20] = { 0 }; char arr2[] = "hello world"; strcpy(arr1, arr2);//返回值为arr1的首地址 printf("%s", arr1); }
strcat函数
- 把源字符串数据追加到目标字符串当中去 ,返回值为destination的首地址
- 源字符串必须以' '结束
- 目标空间必须足够的大,能容纳源字符串的内容
- 目标空间必须可修改
- 不能自己给自己追加(原因:' '被替换不能暂停循环)
引入头文件:include
#include#include void main() { char arr1[20]="hello "; strcat(arr1, "world");//追加字符串,返回值为目标字符串首地址 printf("%sn", arr1);//hello world }
strcmp函数
两个字符串的比较
- ==比较,比较的是2个字符串的地址值
- strcmp(str1,str2)函数比较两个字符串的内容是否相等,如果两个字符串内容相等,那么此函数便会返回0
该函数返回值如下:
- 如果返回值小于 0,则表示 str1 小于 str2。
- 如果返回值大于 0,则表示 str1 大于 str2。
- 如果返回值等于 0,则表示 str1 等于 str2。
比较方法:比较对应位置上的ASCII码值从头到尾逐个比较当第一次出现ASCII码值不同时,则此字符ASCII码大字符所在的字符串大于另一个字符串。
使用:引入头文件:include
#include#include void main() { char arr1[] = "abc"; char arr2[] = "abc"; if (0==strcmp(arr1,arr2)) { printf("两个字符串内容相等"); } else if(0 长度受限制字符串函数
strncpy函数
使用:
- 将源字符串的前num个字符拷贝到目标字符串当中,返回值为目标字符串的首地址
- 如果原数组拷贝个数超出源字符串长度,则之后的拷贝用' '补充
- 目标空间必须足够的大,能容纳源字符串的内容
- 目标空间必须可修改
引入头文件:include
#include#include void main() { char arr1[20] = "hello"; char arr2[] = "hi world"; printf("%sn", strncpy(arr1, arr2,2));//hillo } strncat函数
使用:
- 将源字符串的前num个字符追加到目标字符串当中,返回值为目标字符串的首地址
- 如果原数组拷贝个数超出源字符串长度,则只追加到源字符串长度
- 可以自己给自己追加
- 目标空间必须足够的大,能容纳源字符串的内容
- 目标空间必须可修改
引入头文件:include
#include#include void main() { char arr1[20] = "hello "; char arr2[] = "world hahaha"; printf("%sn", strncat(arr1, arr2,5));//hello world } strncmp函数
使用:
- 将str1字符串与str2字符串比较num个字符,返回值类型同strcmp
引入头文件:include
#include#include void main() { char* p = "abcd"; char* q = "abed"; int ret = strncmp(p, q, 2);//比较2个字符 int res = strncmp(p, q, 3);//比较3个字符 printf("%dn", ret);//0 printf("%dn", res);//-1 } 其他字符串函数函数
strstr函数
使用:
- 在str1字符串中查找是否包含str2字符串,如果存在则返回的是第一次出现位置的字符串,如果不存在,则返回的是null,如果str2传的为空串则返回str1
引入头文件:include
#include#include void main() { char arr1[] = "abcdefabcdef"; char arr2[] = "bcd"; //在arr1中查找是否包含arr2 printf("%sn", strstr(arr1, arr2));//bcdefabcdef } strtok函数
使用:
- seq是个字符串,定义了用作分隔符的字符集合
- 第一个参数指定一个字符串,它包含了0个或者多个由seq字符串中一个或者多个分隔符分割的标记。
- strtok函数找到str中的下一个标记,并将其用’ '替换结尾,返回一个指向这个标记的指针。(注意:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝内容,并且可修改的)。
- strtok函数的第一个参数不为null,函数将找到str中的第一个标记,strtok函数将保存他在字符串中的位置
- strtok函数的第一个参数为null,函数将在同一个字符串中被保存的位置开始,查找下一个标记
- 如果字符串中不存在更多标记,则返回null指针
引入头文件:include
#include#include void main() { char arr1[] = "abcdefabcdef"; char tmp[30] = { 0 }; strcpy(tmp, arr1);//临时拷贝 char arr2[] = "cf";//分隔符的集合 char* ret = NULL; for (ret = strtok(tmp, arr2); ret != NULL; ret = strtok(NULL, arr2)) { printf("%sn", ret); } } strerror函数
使用:
- 调用库函数失败的时候都会设置错误码,errnum表示错误码,将错误码传给strerror函数的时候,该函数将会返回错误码所对应的错误信息字符串的首地址。(将错误码翻译成错误信息)
引入头文件:include
、include #include#include void main() { printf("%sn", strerror(0));//No error printf("%sn", strerror(1));//Operation not permitted printf("%sn", strerror(2));//No such file or directory printf("%sn", strerror(3));//No such process printf("%sn", strerror(4));//Interrupted function call } 注意:errno为在C语言中的全局错误码,要使用必须引入头文件include
#include#include #include int main() { FILE* pFile; pFile = fopen("test.txt", "r"); if (pFile == NULL) printf("Error opening file test.txt: %sn", strerror(errno)); //当fopen这个库函数调用失败时就会有错误码,然后把错误码放到后面的errno这个变量里去,然后strerror函数就会根据错误码,把对应的错误信息打印出来 return 0; }



