C语言字符函数和字符串函数
1.字符分类函数2.字符转换函数3.strlen的使用和模拟实现4.strcpy的使用和模拟实现5.strcat的使用和模拟实现6.strcmp的使用和模拟实现7.strncpy函数的使用8.strncat函数的使用9.strncmp函数的使用10.strstr的使用和模拟实现11.strtok函数的使用12.strerror函数的使用在本章关于字符函数和字符串函数的内容中我们需要引入的头文件有#includestring.h用于字符串函数#includectype.h用于字符分类与转换函数。一.字符分类函数十个分类函数1.isspace(c):空白字符:空格、\n \t \r \v \f2.isdigit(c):十进制数字0~93.isxdigit(c):十六进制0-9,a-f,A-F4.islower(c):小写字母 a~z5.isupper(c):大写字母 A~Z6.isalpha(c):字母大小写7.isalnum(c):字母 数字8.ispunct(c):标点符号9.isgraph(c):可见非空格字符10.isprint(c):可打印字符含空格使用上面的函数需要声明头文件#includectype.h;使用规则1.返回值非 0 条件成立0 不成立不要直接判断12.参数隐患字符若为负数如中文、扩展 ASCII会出错规范写法函数名((unsigned char)ch)3.只判断不修改字符本身例一int main() { int r isdigit(x); //int r isdigit(8); //int n islower(8); int n islower(A); printf(%d\n, r); printf(%d\n, n); return 0; }代码运行结果例二写一个代码将字符串中的小写转换成大写字母其他字符不变int main() { char arr[] I am a Student!; int i 0; while (arr[i] ! \0) { if (islower(arr[i])) arr[i] - 32; printf(%c, arr[i]); i; } return 0; }代码运行结果二.字符转换函数1.tolower:大写字母转小写2.toupper:小写字母转大写代码块int toupper(int c);int tolower(int c);例三大写字母转小写int main() { //int r tolower(x); int r tolower(X); //printf(%c\n, r); putchar(r); return 0; }代码运行结果例四小写字母转大写int main() { int r toupper(x); printf(%c\n, r); putchar(r); return 0; }代码运行结果三.strlen的使用和模拟实现代码块size_t strlen(const char *str);功能统计参数str指向的字符串的长度。统计的是字符串中\0之前的字符的个数。参数str指针指向了要统计长度的字符串。返回值返回了str指向的字符串的长度返回的长度不会是负数所以返回类型是size_t.四.strcpy的使用和模拟实现代码块char* strcpy(char* dest,const char* src);功能字符串的拷贝拷贝到源头字符串中的\0为止。参数dest指针指向目标空间起始地址src指针指向源字符串起始地址返回值strcpy返回目标空间 dest 的起始地址。五.strcat的使用和模拟实现代码块char* strcat(char* dest,const char* src);功能字符串追加将 src 指向的字符串中所有字符都追加到 dest 指向的空间。参数dest指针目标空间起始地址src指针源字符串起始地址。返回值返回 dest 目标空间的起始地址char*。六.strcmp的使用和模拟实现代码块int strcmp(const char* str1,const char* str2);功能逐字符比较 str1 和 str2 两个字符串的 ASCII 码值直到出现不同字符或者遇到\0停止比较。参数str1待比较的第一个字符串起始地址str2待比较的第二个字符串起始地址const 修饰函数内部不会修改两个字符串。返回值0str1 str20str1 str20str1 str2七.strncpy函数的使用代码块char* strncpy(char* dest,const char* src,size_t num);功能从 src 指向字符串拷贝最多 num 个字符到 dest 指向空间。若 src 字符串长度小于 num剩余空间填充\0若 src 长度≥num仅拷贝 num 个字符不会自动追加结束符\0。参数dest指针目标空间起始地址src指针源字符串起始地址返回值返回 dest 目标空间起始地址char*。八.strncat函数的使用代码块char* strncat(char* dest,const char* src,size_t num);功能字符串追加把src指向的源字符串中的所有字符都追加到dest指向的空间中。参数dest指针目标空间起始地址src指针源字符串起始地址返回值返回 dest 目标空间的起始地址char*。九.strncmp函数的使用代码块intstrncmp(const char* str1,const char* str2,size_t num);功能字符串比较比较str1和str2指向的两个字符串的内容最多比较num字符。参数str1指针指向一个比较的字符串str2指针指向另外一个比较的字符串num最多参与比较的字符数量size_t 无符号整数返回值0str1 对应位置字符大于 str20前 num 个字符全部相等0str1 对应位置字符小于 str2十.strstr的使用和模拟实现代码块char* strstr(const char* str1,const char* str2);功能strstr函数查找str2指向的字符串在str1指向的字符串中第一次出现的位置。简而言之在一个字符串中查找子字符串。strstr的使用得包含string.h参数str1指针指向了被查找字符串str2指针指向了要查找字符串返回值如果str1指向的字符串中存在str2指向的字符串那么返回第一次出现位置的指针如果str1指向的字符串中不存在str2指向的字符串那么返回NULL十一.strtok函数的使用代码块char* strtok(char* str,const char* delim);功能分割字符串根据delim参数中指定的分隔符将输入字符串str拆分成多个子字符串。修改原始字符串strtok会直接在原始字符串中插入\0终止符替换分隔符的位置因此原始字符串会被修改。参数str第一次调用传入字符串地址后续继续分割传入 NULL表示继续分割同一个字符串。delim包含所有可能分隔符的字符串。返回值分割成功返回当前片段起始地址分割完毕返回 NULL。十二.strerror函数的使用代码块char* strerror(int errnum);功能strerror函数可以通过参数部分的errnum表示错误码得到对应的错误信息并且返回这个错误信息字符串首字符地址。strerror函数只针对标准库中的函数发生错误后设置的错误码的转换。strerror的使用需要包含string.h参数errnum表示错误码返回值函数返回通过错误码得到的错误信息字符串的首字符的地址。