函数包含在头文件<string.h>中
函数名 | 举例 | 注释 |
---|---|---|
strcpy | strcpy(str , “abcsd123”); | 将后面的字符串复制给前面的str |
strncpy | char str[10]=“”; strncpy(str ,“abc123” , 9); | 拷贝指定长度,不含“\0”,故之前需要预留“\0” |
strcmp | int i=strcmp(str1,str2); | 比较字符串大小,比到不相同时结束,比ASCII值 |
strncmp | int i=strncmp(“abc123”,“abc12345”,5); | 只比较前5位字符 |
strchr | strchar(str,‘f’); | 在字符串中从前往后查找字符,找到第一个,后面都打印出来 |
strrchr | strrchr(str,‘a’); | 在字符串中从后往前查找字符 |
strstr | strstr(str,“中国”); | 在字符串中查找字符串 |
strcat | strcat(str,“你好中国”); | 字符串拼接 |
strtok | strtok(str,“,”); | 让“,”将str切割开 |
strlen | i=strlen(str); | 求str的字符串长度(不含’\0’),返回值是无符号数 |
strlwr | strlwr(str); | 将str字符串变成小写字母 |
strupr | strupr(str); | 将str字符串变成大写字母 |
一、常见题型
1.1 sizeof()和strlen()的区别
sizeof()求所占内存空间大小
strlen()求字符串长度(以‘\0’结束但不含‘\0’)
这里有个具体例子讲得很清楚
以下为补充内容
- strtok();切多次,要在第二次时用strtok(NULL,“, : /”);
为什么是NULL呢?这里别人写的比较详细
第一次调用这个函数是在while循环体之外,此时,字符串"My name is XiaoMing." 中匹配token(即参数seps代表的各种字符,如本例中," ,/t/n"表示空格,逗号,制表符,换行符这四种字符)中所指定的字符的位置在My和name之间。于是,函数的返回值pointer_a为一个指向”My”的指针。此时,pointer_b指向My和name之间的位置,代表pointer_b之前的位置已经进行过查找匹配了。
这样,在循环体之内进行第二次函数调用的时候,只要把strtok()的第一个参数设置为NULL,就可以直接从pointer_b位置开始进行查找匹配了。
所以,NULL的作用只是为了使得每次调用时,都不是从"My name is XiaoMing."的头开始,而是从上次调用时查找所停止的位置开始,如此循环下去,直到无法再找到匹配token的时候位置,这样就实现了把"My name is XiaoMing."按照token进行分隔的效果。所以,NULL的作用只是为了使得每次调用时,都不是从"My name is XiaoMing."的头开始,而是从上次调用时查找所停止的位置开始,如此循环下去,直到无法再找到匹配token的时候位置,这样就实现了把"My name is XiaoMing."按照token进行分隔的效果。
int i=0;
p[i]strtok(str,", : /"); //用,:/ 切割字符串,实质是将切割符号变成''
while(NULL!=p[i]) //从上一次切割处,循环切割
{
i++;
p[i]=strtok(NULL,", : /");
}