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

发布时间:2022-12-02

本文目录一览:

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,也不是数组长度; 如下几种方式:
  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等连接,不过可以加上双引号" ",使之变成字符型) 示例:
#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;
}

扩展资料:

字符串相关函数应用:

  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);
    示例:
    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);
    说明
    1. strtok函数的实质上的处理是,strtoks中查找包含在delim中的字符并用NULL(\0)来替换,直到找遍整个字符串。这句话有两层含义:
      • 每次调用strtok函数只能获得一个分割单位。
      • 要获得所有的分割单元必须反复调用strtok函数。
    2. strtok函数以后的调用时的需用NULL来替换s
    3. 形参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 还有问题吗