由于C没有像C++或者Java或者。。。的各种花样繁多的字符串操作函数。而仅有屈指可数的几种函数:
函数名 | 功能 |
---|---|
strlen(s1) | 返回字符串s1长度,而非这个变量占用空间的大小,那个是sizeof()) |
strcpy(s1,s2) | 复制字符串 s2 到字符串 s1 |
strcat(s1, s2); | 连接字符串 s2 到字符串 s1 的末尾 |
其他的函数先暂时用不到,用到再议。
现在要补充的是:(其他的想到会慢慢补充~0v0)
函数名 | 功能 |
---|---|
p=add_char(str1,c) | 在字符串s1末尾加字符c,返回结果的指针 |
p=add_str(str1,str2) | 拼接字符串s1与s2,返回结果的指针 |
对于表1第一行的代码解释:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main(){
char a[10]="123";
printf("strlen:%d\n",strlen(a));
printf("sizeof:%d\n",sizeof(a));
system("pause");
}
输出:
然后就来写一些替代函数啦~
1.在字符串末尾添加字符
char * add_char(char *s,char c){
int len=strlen(s)+2;
char *p;
p=(char*)malloc(len * sizeof(char));//vs不支持char n[len]这种非常量操作
strcpy(p,s);
p[len-2]=c;
p[len-1]='\0';
return p;
}
int main(){
char a[4]="123";
char b='4';
char *p;
p=add_char(a,b);
printf("%s\n",p);
system("pause");
}
输出
2.两段字符串拼接
char * add_str(char *s1,char *s2){
int len=strlen(s1)+strlen(s2)+1;
char *p;
p=(char*)malloc(len * sizeof(char));//vs不支持char n[len]这种非常量操作
strcpy(p,s1);
strcat(p,s2);
p[len-1]='\0';
return p;
}
int main(){
char a[4]="123";
char b[4]="456";
char *p;
p=add_str(a,b);
printf("%s\n",p);
system("pause");
}
输出
可以看到在进行strcpy或者是strcat前都已经对第一个变量赋足够空间,即事先把要添加的量的空间腾出来,当然必须要这么做,否则会出错!
来源:CSDN
作者:Nemoxy
链接:https://blog.csdn.net/one_chow_chow/article/details/103550481