赞
踩
size_t strlen ( const char * str )
实参传入一个不能更改的字符串数组的首地址,返回无符号整数。字符串数组即为目标字符串,返回值即为该字符串的长度。注意:该函数计数以‘\0'作为结束标志,所以要确保待求字符串数组是有结束标志的,否则返回值为随机值。
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[] = { "abcdef" };
- printf("%zd\n", strlen(str));
- return 0;
- }
char * strcpy ( char * destination, const char * source )
将source所指的字符串数组拷贝一份到destination中,以’\0‘为结束标志,返回destination的地址。注意:1.destination数组容量必须要够大,能够装下source的内容。2.会将'\0'拷贝至destination中。3.destination必须为可变数组。
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[] = { "abcdef" };
- printf("%zd\n", strlen(str));
- char str1[10] = { 0 };
- printf("%s\n", strcpy(str1, str));
- return 0;
- }
char * strcat ( char * destination, const char * source )
将source中的字符串连接到destination后面,返回destination的地址。注意:1.destination必须足够大。2.两个字符串必须有'\0'作为结尾。3.不能自己给自己连接。
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[20] = { "abcdef" };
- printf("%zd\n", strlen(str));
- char str1[10] = { 0 };
- printf("%s\n", strcpy(str1, str));
- printf("%s", strcat(str, str1));
- return 0;
- }
int strcmp ( const char * str1, const char * str2 )
对两个字符串进行比较,比较方式为:依次对每对字符的ASCII值进行比较(位置一一对应),直到比较出大小。str1>str2返回大于0的数;str1<str2返回小于0的数;str1=str2返回0。
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[20] = { "abcdef" };
- printf("%zd\n", strlen(str));
- char str1[10] = { 0 };
- printf("%s\n", strcpy(str1, str));
- printf("%s\n", strcat(str, str1));
- char str2[] = { "abced" };
- printf("%d\n", strcmp(str1, str2));
- return 0;
- }
char * strncpy ( char * destination, const char * source, size_t num )
对比strcpy()多了一个size_t num参数,即指定将source中num位字符拷贝至destination中。
-
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[20] = { "abcdef" };
- printf("%zd\n", strlen(str));
- char str1[10] = { 0 };
- printf("%s\n", strcpy(str1, str));
- printf("%s\n", strcat(str, str1));
- char str2[] = { "abced" };
- printf("%d\n", strcmp(str1, str2));
- char str3[10] = { "0" };
- printf("%s\n", strncpy(str3, str2, 2));//将str2的前两个字符拷贝至str3
- 中
- return 0;
- }
char * strncat ( char * destination, const char * source, size_t num )
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[20] = { "abcdef" };
- printf("%zd\n", strlen(str));
- char str1[10] = { 0 };
- printf("%s\n", strcpy(str1, str));
- printf("%s\n", strcat(str, str1));
- char str2[] = { "abced" };
- printf("%d\n", strcmp(str1, str2));
- char str3[10] = { "0" };
- printf("%s\n", strncpy(str3, str2, 2));
- printf("%s\n", strncat(str3, str2, 2));//将str2的前两个字符连接在str3后
- return 0;
- }
int strncmp ( const char * str1, const char * str2, size_t num )
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[20] = { "abcdef" };
- printf("%zd\n", strlen(str));
- char str1[10] = { 0 };
- printf("%s\n", strcpy(str1, str));
- printf("%s\n", strcat(str, str1));
- char str2[] = { "abced" };
- printf("%d\n", strcmp(str1, str2));
- char str3[10] = { "0" };
- printf("%s\n", strncpy(str3, str2, 2));
- printf("%s\n", strncat(str3, str2, 2));
- printf("%d\n", strncmp(str, str2, 3));
- return 0;
- }
const char * strstr ( const char * str1, const char * str2 )
在str1中寻找str2,返回str1中出现str2的地址。
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[20] = { "abcdef" };
- printf("%zd\n", strlen(str));
- char str1[10] = { 0 };
- printf("%s\n", strcpy(str1, str));
- printf("%s\n", strcat(str, str1));
- char str2[] = { "abced" };
- printf("%d\n", strcmp(str1, str2));
- char str3[10] = { "0" };
- printf("%s\n", strncpy(str3, str2, 2));
- printf("%s\n", strncat(str3, str2, 2));
- printf("%d\n", strncmp(str, str2, 3));
- char str4[] = { "def" };
- printf("%s\n", strstr(str, str4));
- return 0;
- }
char * strtok ( char * str, const char * delimiters )
str为待分割的字符串,其中包含非数字,字母的字符(如果没有,那么就无法进行分割);delimiters为包含用作分割字符串的字符的合集。若str为非NULL,那么就返回第一个字符的位置,并且记录下来当前位置。若str为NULL时,从之前记录的位置出发,继续寻找下一个分割字符,并返回下一个分割字符的位置,直到找到\0返回空指针。值得一提的是,strtok()函数会修改字符串的内容,所以如果不希望字符串别修改的话需要创建临时拷贝字符串后进行操作。
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[] = { "345680229@qq.com" };
- //printf("%s\n",strtok(str, "@."));
- //printf("%s\n",strtok(NULL, "@."));
- //printf("%s\n", strtok(NULL, "@."));
- char* ret = NULL;
- for (ret = strtok(str, "@."); ret != NULL; ret = strtok(NULL, "@."))
- {
- printf("%s\n", ret);
- }
- return 0;
- }
char * strerror ( int errnum )
在编译器中存在一个全局变量errnum,当运行时错误发生时,errnum会被赋上相应的错误码。
每个错误码都有对应的错误信息,这个函数就是将错误码转化成对应的错误信息。
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- for (int i = 0; i < 10; i++)
- printf("%s\n", strerror(i));
- return 0;
-
- }
iscntrl 任何控制字符
isspace 空白字符:空格‘ ’,换页‘\f’,换行'\n',回车‘\r’,制表符'\t'或者垂直制表符'\v'
isdigit 十进制数字 0~9
isxdigit 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F
islower 小写字母a~z isupper 大写字母A~Z isalpha 字母a~z或A~Z
isalnum 字母或者数字,a~z,A~Z,0~9
ispunct 标点符号,任何不属于数字或者字母的图形字符(可打印)
isgraph 任何图形字符
isprint 任何可打印字符,包括图形字符和空白字符
当判断为真时返回非0,判断为假时返回0,以下举两个简单的例子:
- #include <stdio.h>
- #include <ctype.h>
- int main()
- {
- if (islower('a'))
- printf("是小写字母\n");
- if (isupper('A'))
- printf("是大写字母");
-
- }
int tolower(int c);
int toupper(int c);
显然,两个函数都是对字符的ASCII值进行操作,返回值也是字符所对应的ASCII值。
- #include <stdio.h>
- #include <ctype.h>
- int main()
-
- {
- printf("%c\n", tolower('A'));
- printf("%c", toupper('a'));
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。