您现在的位置是:群英 > 开发技术 > 编程语言
C语言字符串操作怎样实现,常见操作有哪些?
Admin发表于 2022-10-17 18:39:14500 次浏览
这篇文章给大家分享的是“C语言字符串操作怎样实现,常见操作有哪些?”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“C语言字符串操作怎样实现,常见操作有哪些?”吧。

字符串是 C语言 程序中经常处理的对象之一,下面本篇文章就来带大家聊聊C语言中的字符串处理,了解一些字符串操作函数,希望对大家有所帮助!

字符串在C语言里使用非常多,因为很多数据处理都是文本,也就是字符串,特别是设备交互、web网页交互返回的几乎都是文本数据。

字符串本身属于字符数组、只不过和字符数组区别是,字符串结尾有’\0’。 字符串因为规定结尾有'\0',在计算长度、拷贝、查找、拼接操作都很方便。

1. 字符串的定义

char buff[]="我是一个字符串";
char a[]="1234567890";
char b[]="abc";
char c[]={'a','b','c','\0'};

在普通的字符数组结尾加一个 \0 就变成了字符串。

2. 处理字符串里字母大小写

将字符串里所有大写字母全部换成小写字母。或者小写字母全部换成大写字母。可以通过形参进行区分。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(char *str,int flag);
int main()
{
    char buff[100];
    printf("从键盘上输入字符串:");
    scanf("%s",buff);
    printf("源字符串:%s\n",buff);
    func(buff,0);
    printf("大写转换小写:%s\n",buff);
    func(buff,1);
    printf("小写转大写:%s\n",buff);
    return 0;
}

//函数功能: 大写小写转换
//flag=0表示大写转换小写  =1表示小写转大写
void func(char *str,int flag)
{
    int data;
    while(*str!='\0')
    {
        if(flag)
        {
            if(*str>='a'&& *str<='z') //小写
            {
                *str=*str-32;
            }
        }
        else
        {
            if(*str>='A'&& *str<='Z') //小写
            {
                *str=*str+32;
            }
        }
        str++;
    }
}

3. 从键盘上录入2个字符串,判断是否相等

#include <stdio.h>
int main()
{
    char str1[100];
    char str2[100];
    int i=0;
    /*1. 录入数据*/
    printf("输入字符串1:");
    scanf("%s",str1);
    printf("输入字符串2:");
    scanf("%s",str2);
    /*2. 比较字符串*/
    while(str1[i]!='\0'||str2[i]!='\0')
    {
        if(str1[i]!=str2[i])break;
        i++;
    }
    if(str1[i]=='\0'&&str2[i]=='\0')
    {
        printf("字符串相等.\n");
    }
    else
    {
        printf("字符串不相等.\n");
    }
    return 0;
}

4. 从键盘上录入一个字符串,按照小到大的顺序排序

#include <stdio.h>
#include <string.h>

int main()
{
    char str1[100];
    int len=0;
    int i,j;
    int tmp;
    printf("输入要排序的字符串:");
    scanf("%s",str1);
    len=strlen(str1);
    //开始排序
    for(i=0;i<len-1;i++)
    {
        for(j=0;j<len-1-i;j++)
        {
            if(str1[j]>str1[j+1])
            {
                tmp=str1[j];
                str1[j]=str1[j+1];
                str1[j+1]=tmp;
            }
        }
    }
    printf("排序之后的字符串:%s\n",str1);
    return 0;
}

5. 从键盘上输入一个字符串,转为整数输出

#include <stdio.h>
#include <string.h>
int main()
{
    //"123"
    char str[100];
    int data=0;
    int i=0;
    printf("从键盘上输入字符串:");
    scanf("%s",str);
    while(str[i]!='\0')
    {
        data*=10;//data=0 data=10 data=120
        data+=str[i]-'0';//data=1 data=12 data=123
        i++;
    }
    printf("data=%d\n",data);
    return 0;
}

6. 字符串删除

从键盘上录入一个字符串,删除字符串里指定的单词,输出结果。

比如:原字符串 ”akjbcds123dfjvbf123fdvbfd123”

删除单词:“123”

输出的结果:”akjbcdsdfjvbffdvbfd”

#include <stdio.h>
#include <string.h>

int main()
{
    char str1[100];
    char str2[100];
    int i=0,j=0;
    int str2_len=0;
    /*1. 录入数据*/
    printf("输入源字符串:");
    scanf("%s",str1);
    printf("输入要删除的字符串:");
    scanf("%s",str2);
    /*2. 计算要删除字符串的长度*/
    str2_len=strlen(str2);
                
    /*3. 查找字符串*/
    for(i=0;str1[i]!='\0';i++)
    {
        //比较字符串
        for(j=0;str2[j]!='\0';j++)
        {
            if(str1[i+j]!=str2[j])break;
        }
        if(str2[j]=='\0')
        {
            //4. 删除字符串---后面向前面覆盖
            for(j=i;str1[j]!='\0';j++)
            {
                str1[j]=str1[j+str2_len];
            }
            str1[j]='\0';
            i--;
        }
    }
    //5. 输出结果
    printf("str1=%s\n",str1);
    return 0;
}

7. 字符串插入

从键盘上录入一个字符串,从指定位置插入一个字符串,再输出结果。

比如:原字符串“1234567890”

(1). 从指定位置插入新的单词。 比如 从第2个下标插入一个“ABC”字符串。

结果: “123ABC4567890”

#include <stdio.h>
#include <string.h>

int main()
{
    char str1[100];
    char str2[100];
    int addr=0;
    int str1_len;
    int str2_len;
    int i;
    /*1. 录入数据*/
    printf("录入源字符串:");
    scanf("%s",str1);
    printf("录入要插入的字符串:");
    scanf("%s",str2);
    printf("输入要插入的下标位置:");
    scanf("%d",&addr);
    str1_len=strlen(str1); //3
    str2_len=strlen(str2); //2
    
    /*2. 完成插入*/
    //完成数据移动
    for(i=str1_len-1;i>=addr;i--)
    {
        str1[i+str2_len]=str1[i];
    }
    //数据替换
    for(i=0;i<str2_len;i++)
    {
        str1[i+addr]=str2[i];
    }
    str1[str1_len+str2_len]='\0';
    /*3. 输出数据*/
    printf("str1=%s\n",str1);
    return 0;
}

8. 字符串替换

从键盘上录入一个字符串,将指定单词替换成想要的单词。

比如:原字符串“123jfvfdj123dkfvbfdvdf”

想要将“123”替换成“888”或者“8888”或者“88”

#include <stdio.h>
#include <string.h>

int main()
{
    char str1[100];
    char str2[100];
    char str3[100];
    int str1_len=0;
    int str2_len=0;
    int str3_len=0;
    int i,j;
    int cnt=0;
    /*1.准备数据*/
    printf("输入源字符串:");
    scanf("%s",str1);
    printf("输入查找的字符串:");
    scanf("%s",str2);
    printf("输入替换的字符串:");
    scanf("%s",str3);
    /*2. 计算长度*/
    str1_len=strlen(str1);
    str2_len=strlen(str2);
    str3_len=strlen(str3);
    /*3. 字符串替换*/
    for(i=0;i<str1_len;i++)
    {
        //查找字符串
        for(j=0;j<str2_len;j++)
        {
            if(str1[i+j]!=str2[j])break;
        }
        //如果查找成功就进行替换
        if(j==str2_len)
        {
            //总长度变短了
            if(str2_len>str3_len)
            {
                cnt=str2_len-str3_len; //差值
                //完成数据向前移动--覆盖
                for(j=i+str2_len-cnt;j<str1_len;j++)
                {
                    str1[j]=str1[j+cnt];
                }
                str1[str1_len-cnt]='\0';
            }
            //总长度变长了
            else if(str2_len<str3_len)
            {
                cnt=str3_len-str2_len; //差值
                //完成数据向后移动
                for(j=str1_len;j>=i+str2_len;j--)
                {
                    str1[j+cnt]=str1[j];
                }
                str1[str1_len+cnt]='\0';
            }
            //替换
            for(j=0;j<str3_len;j++)
            {
                str1[i+j]=str3[j];
            }
            //重新计算长度
            str1_len=strlen(str1);
        }
    }
    /*4. 完成字符串打印*/
    printf("str1=%s\n",str1);
    return 0;
}

以上就是关于“C语言字符串操作怎样实现,常见操作有哪些?”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注群英网络,小编每天都会为大家更新不同的知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-06-28 17:08:04 
摘要:golang封装路由的方法:1、路由写在main函数中,数据库初始连接放在init()函数中。2、路由和db单独封装到一个函数中,以传参的形式将路由传给另一个函数。
2022-06-24 17:50:22 
摘要:随着前端的快速发展,很多人选择html5作为就业的方向,现在的html5比较简单易学,也是当今时代比较好用的工具,但是很多人都不知道前端html5框架有哪些?下面我们来总结一下html5常见六大框架。
2022-05-28 17:18:00 
摘要:go语言求字符串长度的方法:1、使用“len()”函数计算ASCII字符串长度;2、使用“utf8.RuneCountInString()”函数计算Unicode字符串长度。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部