字符串处理函数的实现

学习c语言时经常要和字符串打交道,我们知道字符串处理函数都包含在系统头文件string.h中,现在我们就来看看这些函数是如何实现的。

- 1.计算串长度函数 unsigned int stren(const char *s);
说明:结束符\0不包括在内,返回的是串长度。

unsigned int stren(const char *s)
{
     int i=0;
     while(s[i]!='\0')
     {
       i++;  
     }
     return i;
}

- 2串拷贝函数 char* srtcpy(char *s1,const char *s2);
说明:将串s2复制到指针s1指向的串空间。返回值是串s1指针。

char* strcpy(char *s1,const char *s2)
{
    int i=0;
    while(s2[i]!='\0')
    {
        s1[i]=s2[i];i++;
    }
    s1[i]='\0';
    return s1;
}

- 3.串连接函数 char* strcat(char *s1,const char *s2)
说明:将s2接到s1的尾部,返回值是连接后的串s1指针。注意指针指向的空间是否符合要求。

char* strcat(char *s1,const char *s2)
{
    int i=0;
    while(s1[i]!='\0')
         i++;
    while(*s2!='\0')
         *(s1+i++)=*s2++;   //移动指针法,先赋值再加一
    *(s1+i)='\0';
    return s1;
}

- 4.串比较函数 int strcmp(const char *s1,const char *s2)
说明:对串s1和串s2逐个字符比较,若全部相等,则返回0
若遇到字符不等,则停止比较,如果串s1大于s2,则返回1,否则返回-1

 int strcmp(const char *s1,const char *s2)
 {
     int i=0;
     while(s1[i]!='\0'&&s2[i]!='\0')
     {
         if(s1[i]!=s2[i])
             break;
         i++;
     } 
     if(s1[i]>s2[i])
          return 1;
     else if(s1[i]<s2[i])
              return -1;
          else
              return 0;       
 }

- 5.小写字母变成大写字母 char* strupr(char *s)
说明:其余字符不变,返回修改后的串s1指针。

char* strupr(char *s)
{
    int i=0;
    while(s[i]!='\0')
    {
         if(s[i]>=97&&s[i]<=122)
         {
             s[i]-=32;
         }
         i++;
    }
    return s;
}

- 6.大写字母变成小写字母 char* strlwr(char *s)
说明:同上

char* strlwr(char *s)
{
    int i=0;
    while(s[i]!='\0')
    {
         if(s[i]>=65&&s[i]<=90)
         {
             s[i]+=32;
         }
         i++;
    }
    return s;
}

下面通过一个实例来具体运用上述的字符串处理函数

#include<stdio.h>
#include<string.h>
int main()
{
    char s1[50]="I'm MARKPAIN,",s2[50],s3[100]; 
    printf("串s1为:%s,串s1的串长度为:%d\n",s1,strlen(s1)); 
    printf("Tnput s2:");
    gets(s2);
    printf("s2=%s\n\n",s2);
    strcpy(s3,s1);
    strcat(s3,s2);
    puts(s3);
    printf("\n");
    if(strcmp(s1,s2)>0)
       printf("s1 is larger than s2\n\n");
    if(strcmp(s1,s2)<0)
       printf("s1 id smaller than s2\n\n");
    strupr(s3);
    printf("经过修改,s3变为:");
    puts(s3);
    printf("\n");
    strlwr(s3);
    printf("经过修改,s3变为:");
    puts(s3);
    printf("\n");
    return 0;
}

运行结果如图示:
字符串处理函数调用实例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值