栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言基础学习:字符串操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言基础学习:字符串操作

字符串操作
  • 数组
  • 字符串
  • 指针挪动获取字符串信息
  • 字符串转换和比较
  • 字符串查找、包含、拼接
  • 大小写转换

数组
//数组
int arrInt[] = {6,4,8,5,4,3,1,5,9,4,7,2};
int restlt = arrInt[*arrInt+*(arrInt+4)];
printf("result的值是多少:%dn",result);// 6 + 4 = 10

int restlt = arrInt[*(arrInt+*(arrInt+4))];
printf("result的值是多少:%dn",result);// *(6 + 4 = 10) = 4
字符串
//printf 遇到才会自动停掉
char str[] = {'D','e','r','r','y',‘’};
str[2] = 'z';
printf("第一种方式:%sn",str);


char * str2 = "Derry";// 隐式假如,abcdef
str2[2] = 'z';//会崩溃,第一种方式是复制了一份在栈区,而第二种是只有引用而已,不能修改。
printf("第二种方式:%sn",str);

指针挪动获取字符串信息
int getLen(char * string){
	while(*string){ //*string != '',就不会结束,不是0,C专门支持
		
	}
	return 0;
}

int getLen1(int intarr[]){
	//size(intarr)28 / sizeof(int) 4 = 7
	ine len = sizeof(intarr)/sizeof(int);
	//输出1 C/C++编译器,数组作为参数传递,会把数组优化成指针(为了高效率)
	printf("getLne1" len的长度是:%dn,len);
	return 0;
}

//在C中一般都不靠返回值,这点跟java有所区别
void getLne2(int * resultLen, int intarr[]){
	int count = 0;
	while(*intarr){
		intarr++;
		count++;
	}
	*resultLen = count;
}


int main(){
	char string[] = {'a','b','c','d',‘0’,''};
	int r = getLen(string);
	printf("长度是:%d/n",r);//长度是4
	int len = sizeof(char)/ sizeof(char); //6
	
	int intarr[] = {1,2,3,4,5,6,7};
	getLen1(intarr);
	int intarr2[] = {1,2,3,4,5,6,7,''};
	int result;
	getLen2(&result,intarr2);
	printf("长度是:%d/n",r);//长度是7
	return 0;
}
字符串转换和比较
//字符串转换
char * num = "1";
int restlt = atoi(num);
if(result){
	//非 0 即 true
	printlf("转换后的值是:%dn",result);
} else {
	printlf("转换失败!n");
}

double = resultD = atof(num);
printlf("double 转换后的值是:%dn",resultD);

//字符串比较
char * str1 = "abcdef is";
char * str2 = "abcdef"
int resultc = strcmp(str1,str2);//区分大小写
int resultc = strcmpi(str1,str2);//不区分大小写

if(!resultc){// 0 相等 ,非0不相等
	printlf("相等")
} else {
	printlf("不相等")
}


字符串查找、包含、拼接
char * text = "name is abce";
char subtext = "a";
//strstr API返回的是一个指针
char * pop = strstr(text,subtext);

//查找
if(pop){ //非NULL ,就进入了if,就查找到了
	printf("查找到了,pop的值是:%sn",pop) // 输出abce
} else {
	printf("没有查找到,subtext的值是:%sn",subtext )
}

//包含
if(pop){ 
	printf("包含n"); //输出包含
} else {
	printf("没有包含n");
}
//a 在text中那个位置上
int index = pop - text;
// index = "abce"的指针 - "name is abce"的指针;
//可以用数组来理解,text的指针默认指向第一位,而abce的指针指向的是text的第九位
printf("%s第一次出现的位置:%dn",subtext,index);//9

//拼接
char destination[25];//静态范畴,大小不能变了
char * blank = "--到--",*cpp="c++",*java="java";
strcpy(destination,cpp);//先copy到数组里面去
strcpy(destination,blank);//再拼接
strcpy(destination,java);//再拼接
printf("拼接后的结果:%sn",destination);
//代码效率明显有点低
大小写转换
void lower(char * dest, char * name){
	char * temp = name;//定义临时指针,避免破坏指针name
	while(*temp){
		*dest = tolower(*temp);//使用官方的单个字符转换api:tolower
		temp ++;
		dest++;
	}
	*dest = ‘’;//避免printf打印系统值
}



int main(){
	char * name = "Abcef";
	//先定义结果
	char dest[20];
	lower(dest,name);
	printf("小写转换后的结果是:%sn",dest);// 输出abcef

	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号