一文聊聊C语言中的字符串操作(大小写转换、比较、排序等)
导读:收集整理的这篇文章主要介绍了一文聊聊C语言中的字符串操作(大小写转换、比较、排序等),觉得挺不错的,现在分享给大家,也给大家做个参考。字符串是 c语言 程序中经常处理的对象之一,下面本篇文章就来带大家聊聊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;
ilen-1;
i++) {
for(j=0;
jlen-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;
istr2_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;
istr1_len;
i++) {
//查找字符串 for(j=0;
jstr2_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;
jstr1_len;
j++) {
str1[j]=str1[j+cnt];
}
str1[str1_len-cnt]='\0';
}
//总长度变长了 else if(str2_lenstr3_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;
jstr3_len;
j++) {
str1[i+j]=str3[j];
}
//重新计算长度 str1_len=strlen(str1);
}
}
/*4. 完成字符串打印*/ printf("str1=%s\n",str1);
return 0;
}
相关推荐:《C视频教程》
以上就是一文聊聊C语言中的字符串操作(大小写转换、比较、排序等)的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 一文聊聊C语言中的字符串操作(大小写转换、比较、排序等)
本文地址: https://pptw.com/jishu/594878.html
