本文目录一览:
1、在C语言中处理字符的几种常用方法?
2、C语言字符串操作函数
3、C语言中如何编写一个字符串复制函数,并在主函数中调用它。
4、c语言字符串处理函数的英文原名?
5、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;i<2;i++)printf("%s\n",s2[i]);
2、用字符指针:字符指针指向一个字符串,字符指针数组处理多个字符串。如:
int i;
char *p1="abc",*p2[]={"ABCD","XYZ"},**p;
printf("%s\n",p1);
for(i=0;i<2;i++)printf("%s\n",p2[i]);
p=p2;
for(i=0;i<2;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
,也不是数组长度; 如下几种方式:
strlen("china")
结果为5char s[20]="china";
strlen(s)
结果为5char *s="china";
strlen(s)
结果为5
strcpy(字符串1,字符串2)
:把字符串2中的所有内容,复制到字符串1中,不管字符串1中原先存放的是什么,全部被覆盖(要注意的是s1的长度要足够容纳s2)strcat(字符串1,字符串2)
:将两个字符串连接,形成一个新的字符串(要注意的是s1的长度要足够容纳s1和s2,只能字符串和字符串连接,不能直接和整型,float,double等连接,不过可以加上双引号" ",使之变成字符型) 示例:
#include<stdio.h>
#include<string.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); //返回一个负数,即s1 < s2。虽然s1的长度大于s2,但比较的是ASCII码
C语言中如何编写一个字符串复制函数,并在主函数中调用它。
#include<stdio.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;
}
扩展资料:
字符串相关函数应用:
- 连接运算
concat(s1,s2,s3…sn)
相当于s1+s2+s3+…+sn。
示例:concat('11','aa')='11aa'
- 求子串。
Copy(s,I,I)
从字符串s中截取第I个字符开始后的长度为l的子串。
示例:copy('abdag',2,3)='bda'
- 删除子串。过程
Delete(s,I,l)
从字符串s中删除第I个字符开始后的长度为l的子串。
示例:s:='abcde';delete(s,2,3);
结果s:='ae'
- 插入子串。过程
Insert(s1,s2,I)
把s1插入到s2的第I个位置
示例:s:='abc';insert('12',s,2);
结果s:='a12bc'
- 求字符串长度
length(s)
示例:length('12abc')=5
参考资料:百度百科-字符串
c语言字符串处理函数的英文原名?
- 函数名:
strrchr
功能: 在串中查找指定字符的最后一个出现
用法:char *strrchr(char *str, char c);
示例: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);
示例: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);
说明:strtok
函数的实质上的处理是,strtok
在s
中查找包含在delim
中的字符并用NULL(\0
)来替换,直到找遍整个字符串。这句话有两层含义:- 每次调用
strtok
函数只能获得一个分割单位。 - 要获得所有的分割单元必须反复调用
strtok
函数。
- 每次调用
strtok
函数以后的调用时的需用NULL
来替换s
。- 形参
s
(要分割的字符串)对应的变量应用char s[]="..."
形式,而不能用char *s="..."
形式。 示例:
输出结果: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 还有问题吗