您的位置:

c语言写的一些字符串处理函数,c语言中关于字符串的函数

本文目录一览:

在C语言中处理字符的几种常用方法?

基本上两种:字符数组和字符指针。字符数组名是常量,字符指针是变量

1、用字符数组:一个一维字符数组存储一个字符串,二维数组存储多个字符串。如:

int i;

char s1[]="abc",s2[][80]={"ABCD","XYZ"},s3[80];

scanf("%s",s3);

printf("%s,%s\n",s1,s3);

for(i=0;i2;i++)printf("%s\n",s2[i]);

2、用字符指针:字符指针指向一个字符串,字符指针数组处理多个字符串。如:

int i;

char *p1="abc",*p2[]={"ABCD","XYZ"},**p;

printf("%s\n",p1);

for(i=0;i2;i++)printf("%s\n",p2[i]);

p=p2;

for(i=0;i2;i++)printf("%s\n",*p++);

3、字符数组与字符指针配合一起使用:字符数组提供字符串的存储,处理字符串用字符指针

char s[80],*p;

p=s;

scanf("%s",p);

printf("%s",p);

在string.h中所有处理字符串函数,对字符数组和字符指针都适用。

C语言字符串操作函数

strupr:将字符串s转换为大写形式

strlwr:将字符串s转换为小写形式

以上两个没说的!

●strlen功能:返回字符串s的长度,不包括串结束字符'\0',也不是数组长度;

如下几种方式:

1)strlen("china") 结果为5

2)char s[20]="china";

strlen(s) 结果为5

3)char *s="china";

strlen(s) 结果为5

●strcpy(字符串1,字符串2): 把字符串2中的所有内容,复制到字符串1中,不管字符串1中原先存放的是什么,全部被覆盖(要注意的是s1的长度要足够容纳s2)

●strcat(字符串1,字符串2): 将两个字符串连接,形成一个新的字符串(要注意的是s1的长度要足够容纳s1和s2,只能字符串和字符串连接,不能直接和整型,float,double等连接,不过可以加上双引号" ",使之变成字符型)

如下:

#includestdio.h

#includestring.h

void main()

{

char a[100];

char b[100];

strcpy(a,"我爱-");

strcpy(b,"-美女");

strcat(a,b);

puts(a); /*输出:我爱--美女*/

}

●strcmp比较字符串的大小,但不是比较s1和s2的长度,而是比较对应字符串中的ASCII码的大小

如下:

char s1[10]="china";

char s2[10]="chz";

strcmp(s1,s2); //返回一个负数,即s1s2。虽然s1的长度大于s2,但比较的是ASCII码

C语言中如何编写一个字符串复制函数,并在主函数中调用它。

#includestdio.h

char *custom_cpy(char *to,char *from);

int main(int argc,char *argv[]){

char *from = "i like c langanger";

char to[30];

char *ptr = custom_cpy(to,from);

printf("%s,%s\n",ptr,to);

return 0;

}

char *custom_cpy(char *to,char *from){

if(to == NULL || from == NULL){

return NULL;

char *p = to;

for(;*from!='\0';from++,to++){

*to = *from;

*to = '\0';//拷贝完毕之后一定要加一个结束符号

return p;

}

扩展资料:

字符串相关函数应用:

1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。

例:concat(‘11’,'aa’)='11aa’;

2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。

例:copy(‘abdag’,2,3)=’bda’;

3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。

例:s:=’abcde’;delete(s,2,3);结果s:=’ae’;

4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置

例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’;

5. 求字符串长度 length(s) 例:length(‘12abc’)=5;

参考资料:

百度百科-字符串

c语言字符串处理函数的英文原名?

函数名: strrchr

功 能: 在串中查找指定字符的最后一个出现

用 法: char *strrchr(char *str, char c);

举例:

[cpp] view plain copy

char fullname="./lib/lib1.so";

char *ptr;

ptr = strrchr(fullname,'/');

printf("filename is %s",++ptr);

//运行结果:filename is lib1.so

函数名: strchr

功 能: 在串中查找指定字符的第一个出现

用 法: char *strchr(char *str, char c);

举例:

[cpp] view plain copy

char fullname="./lib/lib1.so";

char *ptr;

ptr = strrchr(fullname,'.');

printf("after strchr() is %s",++ptr);

//运行结果:after strchr() is /lib/lib1.so

函数名: strtok

功 能: 在串中查找指定字符的第一个出现

用 法: char *strtok(char *s, char *delim);

说明:

1.strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(2)要获得所有的分割单元必须反复调用strtok函数。

2.strtok函数以后的调用时的需用NULL来替换s.

3.形参s(要分割的字符串)对应的变量应用char s[]=”….”形式,而不能用char *s=”….”形式。

举例:

[cpp] view plain copy

void main()

{

char buf[]=”Golden Global View”;

char* token = strtok( buf, ” “);

while( token != NULL )

{

printf( ”%s “, token );

token = strtok( NULL, ” “);

}

return 0;

}

/*其结果为:

Golden

Global

View

*/

C语言字符串处理函数

strcpy(p+strlen(q),r);表示从数组首地址偏移strlen(q),也就是从元素d所在的位置开始复制

这时复制完后数组p的长度为3+5=8(元素d被覆盖)

strcat(p,q);表示从数组p的尾部进行连接,这时数组p的长度为8+3=11

而数组p在定义为char p[20],即请求连续开辟20个char类型存储单元,而每个char占一字节,所以sizeof(p)等于20

还有问题吗