文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言中的字符串操作方法有哪些

2023-06-29 17:57

关注

本文小编为大家详细介绍“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;        printf("输入字符串1:");    scanf("%s",str1);    printf("输入字符串2:");    scanf("%s",str2);        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;        printf("输入源字符串:");    scanf("%s",str1);    printf("输入要删除的字符串:");    scanf("%s",str2);        str2_len=strlen(str2);                        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;        printf("录入源字符串:");    scanf("%s",str1);    printf("录入要插入的字符串:");    scanf("%s",str2);    printf("输入要插入的下标位置:");    scanf("%d",&addr);    str1_len=strlen(str1); //3    str2_len=strlen(str2); //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';        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;        printf("输入源字符串:");    scanf("%s",str1);    printf("输入查找的字符串:");    scanf("%s",str2);    printf("输入替换的字符串:");    scanf("%s",str3);        str1_len=strlen(str1);    str2_len=strlen(str2);    str3_len=strlen(str3);        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);        }    }        printf("str1=%s\n",str1);    return 0;}

读到这里,这篇“C语言中的字符串操作方法有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯