当前位置: 首页 > news >正文

C语言基础及指针⑥字符操作

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

接续上篇C语言基础及指针⑤动态内存分配

字符操作 , 是我们写程序时 , 最常用的一种操作 , 例如:字符串截取 , 字符串替换 , 字符串转整数类型等等 , 都是字符操作 , 在java中String类就是二三十个方法 , 还有StringBuffer , StringBuilder等辅助类 。 下面 ,我们就来看看C语言中字符处理的函数 。

一. 字符数组

// 字符数组
void charArray() {

	// 字符数组 , 可以修改
	char c[15] = { 'y','e','s',' ','m','a','n' };
	// 字符数组可以直接作为字符串输出
	printf("%s\n", c);

	// 修改
	c[0] = 'a';

	printf("修改字符:%s\n", c);

}

字符数组 , 本身是一个数组 , 但是也可以作为字符串格式化输出 , 可以任意替换里面的字符 , 和操作数组是一样的 。

二. 字符指针

/*字符指针*/
void charPointer() {
	// 内存连续排列 , 不可修改
	char* s = "Never give up";

	printf("内存地址:%#x\n", s);

	printf("-------------------------------\n截取字符\n");
	// 截取字符
	s += 6;
	while (*s)
	{
		printf("%c", *s);
		s++;
	}
}

字符指针与字符数组 , 最大的区别是一个定义了就不可以修改 , 一个可以任意修改里面的字符 , 就和StringStringBuilder一样 , String定义了就无法增加或修改里面的内容 , 一个是可以增加和修改里面的内容 。

下面就列举几个常用的操作:

字符函数查询网站: 字符串函数

拼接字符串

/*拼接函数*/
void spliceString() {
	// 合并后存储字符的容器
	char dest[40] = {'h','e','h','e',' '};

	char* c1 = "Never give up ";

	char* c2 = "I blive you ! ";

	// 会清除字符数组原有的数据
	//strcpy(dest, c1);
	strcat(dest, c1);
	strcat(dest, c2);

	printf("\n拼接字符串:\n%s\n", dest);

}

查找单个字符


/*查找单个字符*/
void searchChar() {
	char* str = "I wanna dont kiss you";
	char* p = strchr(str, 'd');
	
	if (p) {
		printf("索引位置:%d\n", p - str);
		printf("打印: ");
		str += p - str;
		while (*str)
		{
			printf("%c",*str);
			str++;
		}
		printf("\n");
	}
	else {
		printf("没有找到\n");
	}
}

查找字符串


/*查找字符串*/
void sreachChars() {
	char* str = "落花有意流水无情";
	char* handle = "流";

	char* p = strstr(str, handle);

	if (*p) {
		printf("索引位置:%d\n", p - str);
		printf("打印: ");
		str += p - str;
		printf("%s ---- %s\n", str,p);
	}
	else {
		printf("没找到\n");
	}
}

字符转换

/*字符转换int*/
void strToInt() {
	char* p = "123";
	int toInt = atoi(p);
	int res = toInt + 123;
	printf("字符转换int数值: %d\n", res);
}

字符转换函数定义:

/-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Narrow String to Number Conversions
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
_Check_return_                    _ACRTIMP double    __cdecl atof   (_In_z_ char const* _String);
_Check_return_ _CRT_JIT_INTRINSIC _ACRTIMP int       __cdecl atoi   (_In_z_ char const* _String);
_Check_return_                    _ACRTIMP long      __cdecl atol   (_In_z_ char const* _String);
_Check_return_                    _ACRTIMP long long __cdecl atoll  (_In_z_ char const* _String);
_Check_return_                    _ACRTIMP __int64   __cdecl _atoi64(_In_z_ char const* _String);

_Check_return_ _ACRTIMP double    __cdecl _atof_l  (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);
_Check_return_ _ACRTIMP int       __cdecl _atoi_l  (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);
_Check_return_ _ACRTIMP long      __cdecl _atol_l  (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);
_Check_return_ _ACRTIMP long long __cdecl _atoll_l (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);
_Check_return_ _ACRTIMP __int64   __cdecl _atoi64_l(_In_z_ char const* _String, _In_opt_ _locale_t _Locale);

_Check_return_ _ACRTIMP int __cdecl _atoflt (_Out_ _CRT_FLOAT*  _Result, _In_z_ char const* _String);
_Check_return_ _ACRTIMP int __cdecl _atodbl (_Out_ _CRT_DOUBLE* _Result, _In_z_ char*       _String);
_

C语言中的字符操作函数也比较多 , 这里列举几个常用的 , 其他的可以去字符串函数网址查询 , 都有例子 。

Android程序员学C系列:

C语言基础及指针①

C语言基础及指针②之指针内存分析

C语言基础及指针③函数与二级指针

C语言基础及指针④函数指针

C语言基础及指针⑤动态内存分配

C语言基础及指针⑥字符操作

C语言基础及指针⑦结构体与指针

C语言基础及指针⑧文件IO

C语言基础及指针⑨联合体与枚举

C语言基础及指针⑩预编译及jni.h分析

转载于:https://my.oschina.net/byxiaozhu/blog/749436

相关文章:

  • Permison Denied
  • 文本处理工具与正则表达式、grep
  • C#中将DataTable导出为HTML的方法
  • day9---多线程,线程锁,队列
  • epoll反应堆模型
  • 这三个创新的主卧装修方案可以学习下!
  • Git中文版教程
  • 枚举
  • AppScan安全问题解决方案
  • POJ 2115 C Looooops扩展欧几里得
  • 甲骨文:Java 9将推迟到2017年7月发布
  • 修改Window的hosts文件提示“该文件被其他程序占用”解决方案
  • P1272 重建道路
  • 【Spring AOP】学习记录(二)
  • 踏上Cisco学习新征程
  • Angular Elements 及其运作原理
  • JavaScript DOM 10 - 滚动
  • JavaScript 基本功--面试宝典
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Java小白进阶笔记(3)-初级面向对象
  • MySQL数据库运维之数据恢复
  • SpingCloudBus整合RabbitMQ
  • Spring Boot MyBatis配置多种数据库
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • SSH 免密登录
  • win10下安装mysql5.7
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 前端性能优化——回流与重绘
  • 软件开发学习的5大技巧,你知道吗?
  • 深度学习中的信息论知识详解
  • 说说动画卡顿的解决方案
  • 跳前端坑前,先看看这个!!
  • Java数据解析之JSON
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​ssh免密码登录设置及问题总结
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #HarmonyOS:Web组件的使用
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (利用IDEA+Maven)定制属于自己的jar包
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)3D模板阴影原理
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET CLR Hosting 简介
  • .net core 6 redis操作类
  • .Net FrameWork总结
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET关于 跳过SSL中遇到的问题
  • .net开发引用程序集提示没有强名称的解决办法