字符串处理函数是在头文件<string.h>中。
测字符串长度函数
函数名称:size_t strlen(const char *s);
函数功能:返回字符串s的长度,不包括字符串结尾的’\0’。
#include <stdio.h>
#include <string.h>
int main(void){
char str[20] = "Hello World";
printf("str的长度为:%d\n",strlen(str));
printf("此字符串的长度为:%d\n",strlen("HelloWorld"));
return 0;
}
运行结果:
str的长度为:11
此字符串的长度为:10
字符串拷贝函数
函数名称:char *strcpy(char *dest,const char *src);
函数功能:拷贝src指向的字符串,拷贝到dest指向的内存中,’\0’也会拷贝。函数的返回值返回的是目的内存的地址。
#include <stdio.h>
#include <string.h>
int main(void){
char str[20];
char *addr = strcpy(str,"Hello");
printf("str的内容:%s,地址:%d",str,addr);
return 0;
}
运行结果:
str的内容:Hello,地址:6487600
函数名称:char *strncpy(char *dest,const char *src,size_t n);
函数功能:将字符串src的前n个字节,拷贝到dest指向的地址中,’\0’不拷贝。
说明:如果n大于src的字符个数,则在dest后面添加n-strlen(src)个’\0’。
#include <stdio.h>
#include <string.h>
int main(void){
char i = 0;
char str[20];
char str2[20];
char *addr = strncpy(str,"Hello\0Hello",10);
strncpy(str2,"Hello",3);
printf("str的内容:%s,地址:%d\n",str,addr);
printf("str的c长度:%d\n",strlen(str));
printf("str的内容:%s\n",str2);
printf("str的ASCII为:\n");
for(i = 0;i < sizeof(str);i++){
printf("%d\t",str[i]);
}
return 0;
}
运行结果:
str的内容:Hello,地址:6487584
str的c长度:5
str的内容:Hel
str的ASCII为:
72 101 108 108 111 0 0 0 0 0 64 0 0 0 0
0 15 0 0 0
字符串追加函数
函数名称:char *strcat(char *dest,const char *src);
函数功能:将src指向的字符串追加到dest指向的字符串的后面,追加的时候追加’\0’。
#include <stdio.h>
#include <string.h>
int main(void){
char str[20] = "H";
strcat(str,"el");
printf("str的内容为:%s\n",str);
strcat(str,"lo");
printf("str的内容为:%s\n",str);
return 0;
}
运行结果:
str的内容为:Hel
str的内容为:Hello
函数名称:char *strncat(char *dest,const char *src,size_t,n);
函数功能:追加src字符串前n个字符,追加到dest的后面,追加的时候追加’\0’。
#include <stdio.h>
#include <string.h>
int main(void){
char str[20] = "H";
strncat(str,"el",2);
printf("str的内容为:%s\n",str);
strncat(str,"loooo",2);
printf("str的内容为:%s\n",str);
return 0;
}
运行结果:
str的内容为:Hel
str的内容为:Hello