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

中国大学MOOC--C语言程序设计第十周字符串(下)

10.2字符串函数

        10.2-1 单字符输入输出函数

                        1.putchar

                        int putchar(int c);

                        向标准输出写一个字符;

                        返回写了几个字符,EOF(-1)表示写失败,end of file.

                        2.getchar

                        int getchar(void);

                        从标准输入读入一个字符,返回类型是int是为了返回EOF(-1),表标准输入结束。

                        shell和键盘和.exe的交互过程:shell的工作是行编辑工作,有一大片缓冲区,在摁下回车之前,输入的数据都在shell里面停留,回车在缓冲区中也占一个位置,getchar一次读一个字符,scanf函数可以读很多,看控制格式;shell看到ctrl Z填一个EOF进去(不同环境实现方式不同),再用getchar去读就读到”-1“

        

        10.2-2  string.h

                strlen、cmp、cpy、cat、chr、str

                首先来看strlen,如何求字符串的长度,这里注意strlen()和size()对于相同字符串来说结果不同,记住字符串和字符数组的区别

       

         10.2-3  字符串函数strcmp

        int    strcmp(const char *s1, const char *s2);

        比较两个字符串,返回:

                0:s1==s2;

                1:s1>s2;

                -1:s1<s2;

                数组的比较用==会发生错误,因为字符在内存中的地址不一样;

       

        10.2-4  字符串函数cpy

                一、strcpy函数概念及其格式

restrict(C99新关键字)表明src和dst不能重叠;

现代计算机一般都是多核:当计算机多核时,计算机会把拷贝的工作分成几段,每一个核分别去做某段的拷贝,在这个时候必须要求dst和src不能重叠,如果重叠分开拷贝会发生冲突

在这个函数中第一个参数是目的,第二个参数是源,这个函数还有一个返回,返回字符串dst:让strcpy()的结果参与其他运算

        

                二、strcpy用处

                

                三、自己写cpy函数

数组版本

指针版本

#include<stdio.h>
#include<string.h>
char *mycpy(char *dst, const char *src);int main()
{char s1[]="abc";char s2[]="asdhashdaiud";mycpy(s1,s2);printf("%s",s1);return 0;} char *mycpy(char *dst, const char *src)
{char* ret=dst;
//	while(*src!='\0')//循环条件可以直接改为*src 
//	{
//		*dst=*src;
//		dst++;
//		src++;
//		//循环内也可以写成*dst++=*src++ 
//	}while(*dst++=*src++);*dst='\0';return ret;
}

        10.2-5  字符串函数strcat

       dst=[strlen(dst)]  =  src[0];

        strcpy和strcat都可能会出现安全问题,若目的地没有足够空间?

                尽量不使用!!!!!

        cpy和cat的安全版本:第三个字符串比较函数并不是为了安全;第三个函数其中一个用法是看一个字符串前三个字符是不是我们需要判断的字符,参数里面写3即可

        

        10.2-6字符串搜索函数

                一、字符串中找字符

上面的函数表示从左往右寻找字符,下面的函数表示从右向左寻找字符。

        使指针p指向字符串"hello"里面的第二个'l',方法如下:

#include<stdio.h>
#include<string.h>int main()
{char s[]="hello";char *p=strchr(s,'l');//注意这里++p  和   p++   和   p+1的区别 p = strchr(++p,'l');printf("%s",p);return 0;} 

        第二件事情:如何截部分字符串并赋值给另一个字符串?

        如果想要字符串前半部分呢?

        二、字符串中找字符串

char *strstr(const char *s1, const char *s2);             //字符串中寻找字符串

char *strcasestr(const char *s1, const char *s2);     //忽略大小写作查询过程

http://www.dtcms.com/a/335487.html

相关文章:

  • openEuler等Linux系统中如何复制移动硬盘的数据
  • HTTPS 配置与动态 Web 内容部署指南
  • Hadoop入门
  • SpringCloud 06 服务容错 Sentinel
  • NY270NY273美光固态闪存NY277NY287
  • 黎阳之光:以动态感知与 AI 深度赋能,引领电力智慧化转型新革命
  • mysql||事务相关知识
  • nertctl使用了解
  • Node.js导入MongoDB具体操作
  • IoT/HCIP实验-5/基于WIFI的智慧农业实验(LwM2M/CoAP+PSK+ESP8266 连接到 IoTDA)
  • python study notes[4]
  • Vue深入组件:Props 详解3
  • 【adb端口5555】烽火hg680-gy_烽火hg680-gc安卓9线刷烧录包 解决用一段时间就提示升级的问题
  • 回溯剪枝的 “减法艺术”:化解超时危机的 “救命稻草”(一)
  • 如何在 Ubuntu 24.04、22.04 或 20.04 Linux 中更改计算机名称
  • 智能化管理:开启海洋牧场新时代
  • 字节 Golang 大模型应用开发框架 Eino简介
  • Vue深入组件:Props 详解2
  • es7.17.x es服务yellow状态的排查查看节点,分片状态数量
  • 42 C++ STL模板库11-容器4-forward_list
  • C++算法竞赛:位运算
  • 线程(基本概念和相关命令)
  • CT01-反转链表(Java)
  • 从零开始:SpringBoot与KingbaseES的完美融合实践
  • 基于飞算JavaAI的可视化数据分析集成系统项目实践:从需求到落地的全流程解析
  • Java 大视界 -- Java 大数据分布式计算在基因测序数据分析与精准医疗中的应用(400)
  • Excel 表格数据自动填充
  • 【线程安全(二) Java EE】
  • 基于飞算JavaAI实现布隆过滤器防止缓存穿透:原理、实践与全流程解析
  • 【电路笔记 通信】AXI4-Lite协议 FPGA实现 Valid-Ready Handshake 握手协议