我是靠谱客的博主 现代保温杯,这篇文章主要介绍一文聊聊C语言中的字符串操作(大小写转换、比较、排序等),现在分享给大家,希望可以做个参考。

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

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

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

1. 字符串的定义

复制代码
1
2
3
4
char buff[]="我是一个字符串"; char a[]="1234567890"; char b[]="abc"; char c[]={'a','b','c',''};
登录后复制

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

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

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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("源字符串:%sn",buff); func(buff,0); printf("大写转换小写:%sn",buff); func(buff,1); printf("小写转大写:%sn",buff); return 0; } //函数功能: 大写小写转换 //flag=0表示大写转换小写 =1表示小写转大写 void func(char *str,int flag) { int data; while(*str!='') { if(flag) { if(*str>='a'&& *str<='z') //小写 { *str=*str-32; } } else { if(*str>='A'&& *str<='Z') //小写 { *str=*str+32; } } str++; } }
登录后复制

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#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]!=''||str2[i]!='') { if(str1[i]!=str2[i])break; i++; } if(str1[i]==''&&str2[i]=='') { printf("字符串相等.n"); } else { printf("字符串不相等.n"); } return 0; }
登录后复制

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#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("排序之后的字符串:%sn",str1); return 0; }
登录后复制

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#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]!='') { data*=10;//data=0 data=10 data=120 data+=str[i]-'0';//data=1 data=12 data=123 i++; } printf("data=%dn",data); return 0; }
登录后复制

6. 字符串删除

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

比如:原字符串 ”akjbcds123dfjvbf123fdvbfd123”

删除单词:“123”

输出的结果:”akjbcdsdfjvbffdvbfd”

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#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]!='';i++) { //比较字符串 for(j=0;str2[j]!='';j++) { if(str1[i+j]!=str2[j])break; } if(str2[j]=='') { //4. 删除字符串---后面向前面覆盖 for(j=i;str1[j]!='';j++) { str1[j]=str1[j+str2_len]; } str1[j]=''; i--; } } //5. 输出结果 printf("str1=%sn",str1); return 0; }
登录后复制

7. 字符串插入

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

比如:原字符串“1234567890”

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

结果: “123ABC4567890”

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#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]=''; /*3. 输出数据*/ printf("str1=%sn",str1); return 0; }
登录后复制

8. 字符串替换

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

比如:原字符串“123jfvfdj123dkfvbfdvdf”

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#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]=''; } //总长度变长了 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]=''; } //替换 for(j=0;j<str3_len;j++) { str1[i+j]=str3[j]; } //重新计算长度 str1_len=strlen(str1); } } /*4. 完成字符串打印*/ printf("str1=%sn",str1); return 0; }
登录后复制

相关推荐:《C视频教程》

以上就是一文聊聊C语言中的字符串操作(大小写转换、比较、排序等)的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是现代保温杯最近收集整理的关于一文聊聊C语言中的字符串操作(大小写转换、比较、排序等)的全部内容,更多相关一文聊聊C语言中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(115)

评论列表共有 0 条评论

立即
投稿
返回
顶部