C语言面试高频问题:自己代码实现字符串相关的常用API

2023-11-02

参考:C语言面试高频问题:自己代码实现字符串相关的常用API
作者:图触靓
发布时间: 2020-08-08 13:31:33
网址:https://blog.csdn.net/bhbhhyg/article/details/107878102

1、实现get(char *);从键盘获取字符串

void myget(char *str)
{	
	while(1)
	{	
		scanf("%c",str);
		if(*str=='\n')
		{	
		    *str='\0';
			return;
		}
		str++;
	 } 
}

2、实现put(char *);输出字符串

void myput(char *str)
{
	while(*str!='\0')
	{
		printf("%c",*str++);
	
	}
	printf("\n");
	return;
}

3、实现strlen(char *);求字符串长度

int mystrlen(char *str)
{	
	int len=0;
    while(1)
    {
    		if(*str=='\0')
    		{
    		
    			return len;
			}
	    	str++;
	    	len++;
	}
	
}

4、实现strcpy(char *,char *);拷贝str2的内容到str1;

void mystrcpy(char * str1,char * str2)
{
	while(*str2!='\0')
	{
		*str1=*str2;
		str1++;
		str2++;
	}
}

5、实现strcat(char *,char *);合并字符串,把str2的内容合并到str1的后面

void mystrcat(char *str1,char *str2)
{
	while(*str1!='\0')
	{
		str1++;
	}
	while(*str2!='\0')
	{
		*str1=*str2;
		str2++;
		str1++;
	}
	return;
 } 

6、实现strcmp(char ,char)比较字符串大小,若两字符串内容完全相同,返回0,若str1比str2长返回1,str1比str2短则返回-1,长度相同内容不同也返回-1

int mystrcmp(char *str1,char *str2)
{	
	int str1len=0;
	int str2len=0;
	while(*str1!='\0') 
	{
		str1++;
		str1len++;
	}
	while(*str2!='\0') 
	{
		str2++;
		str2len++;
	}
	if(str1len-str2len==0){
		for(int i=0;i<str1len;i++)
		{
			if(*str1==*str2){
				str1--;
				str2--;
			}
			else{
				return -1;
			}
		}
		return 0;
		
	}
	else if(str1len-str2len>0){
	return 1;
    }
    else {
    return -1;
	}
} 

以上仅是个人思路,并非算法最优

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言面试高频问题:自己代码实现字符串相关的常用API 的相关文章

  • 五大板块(1)—— 数组的定义,赋值与应用

    参考 五大板块 1 数组的定义 赋值与应用 作者 丶PURSUING 发布时间 2021 03 18 16 00 05 网址 https blog csdn net weixin 44742824 article details 11498
  • 五大板块(2)—— 指针

    参考 五大板块 2 指针 作者 丶PURSUING 发布时间 2021 03 18 16 01 22 网址 https blog csdn net weixin 44742824 article details 114981482 本文为学
  • c语言负数翻转问题

    1 在项目中 我们经常会用到变量 那么在变量的定义和传递过程中 经常会出现负数的翻转问题 int test funtion return 1 void poll fun unsigned int a while a gt 250 print
  • static用法

    本用法针对于C语言 文中所用代码在Qt中均运行成功 static 主要用法 修饰变量 修饰函数 1 修饰变量 形成动态变量和静态变量 动态变量 不使用static include
  • 结构体与共用体(联合体)

    参考 结构体与共用体 作者 一只青木呀 发布时间 2020 08 09 08 29 22 网址 https blog csdn net weixin 45309916 article details 107889394 参考 联合体 uni
  • 计算并输出给定正整数n的所有因子(不包括1和自身)之和

    国二有题目 请编写函数fun 该函数的功能是 计算并输出给定正整数n的所有因子 不包括1和自身 之和 规定n的值不大于1000 例如 在主函数中从键盘给n输入的值为856 则输出为 sum 763 代码如何完成呢 分析 1 输入的数字要是整
  • 多文件编辑作业(2023.1.10)

    第一题 main c include head h int main int argc const char argv char str hello my student int start 0 int end strlen str 1 M
  • 黑马程序员之---C学习笔记之printf与scanf使用及注意事项

    Java培训 Android培训 iOS培训 Net培训 一 printf函数介绍 printf函数是一个标准库函数 能够以精确的格式输出程序运算的结果 1 格式字符串 是由格式字符 包括 转换说明符 标志 域宽 精度 和普通字符组成 转换
  • 函数作业(2023.1.4)

    函数作业 1 计算数组中完数的个数 完数 除本身约数和等于本身 例如6 1 23 1 2 3 6 例如28 1 2 4 7 14 28 在该函数 void PerfectFun int arr int n 循环数组每一个值 在该函数 int
  • # 和 ## 的区别

    参考 和 的区别 作者 枕上 发布时间 2021 07 25 08 23 40 网址 https blog csdn net jinchi boke article details 119076280 utm source app app
  • 每日一题(C语言基础篇)3

    题目描述 求一个整数中2进制为1的个数 例如 8 00001000 有一个二进制为1的数 9999 270F 有8个2进制为1的数 代码实现 include
  • 冒泡排序--数组的简单排序,从大到小,从小到大

    冒泡排序 是计算机程序中较为常见和简单的排序算法 它需要重复地走访需要进行排序的元素列 按照一定顺序依次比较两个相邻的元素 如果顺序错误就把他们交换过来 示意原图如下 我们需要的结果示意图如下 那我们应该怎么进行程序的编写才能满足这样的结果
  • 【第01题】A + B

    文章目录 零 写在前面 一 例题1 1 题目描述 2 解题思路 3 代码详解 二 例题2 1 题目描述 2 解题思路 3 代码详解 三 例题3 1 题目描述 2 解题思路 3 代码详解 四 例题4 1 题目描述 2 解题思路 3 代码详解
  • C零基础课程-13-关系运算符与关系表达式

    文章目录 C语言中的关系运算符 与 gt 与 lt gt 与 lt 关系表达式的值 初学者常见bug 错写 为 视频地址 https www bilibili com video av73897727 C语言中的关系运算符 C语言中的关系运
  • 程序设计职工管理系统

    需求分析 1 1 设计系统的目的分析 本系统要求用 C 语言建立一个职工信息管理系统 本职工信息管理系统可以实现对众多员工信息的管理 包含对职工信息进行添加 查询 删除 修改 1 2系统的界面要求 按任意键便可以进入主菜单 在主菜单上显示出
  • 浮点数在计算机中存储方式、十六进制(HEX)和浮点类型(float、double)转换

    目录 浮点数在计算机中存储方式 举例 8 25和120 5在内存中真正的存储方式 浮点类型转换为十六进制 方法1 用地址用指针 方法2 用共用体 方法3 使用memcpy 十六进制转换为浮点类型 浮点数在计算机中存储方式 https www
  • 【华清远见嵌入式培训】C基础

    Linux命令基础 1 Linux文件类型 bsp lcd 七种 b 块 block 设备文件 存储设备 硬盘 SD卡 dev sd s 套接字 socket 文件 网络编程 p 管道 pipe 文件 I O编程 普通文件 c文件 h文件
  • c语言实例--ip地址形式输出

    问题 输入一个32位的二进制的数 每8位转化为一个十进制的书 将其转化为十进制的ip地址 思路先行 第一步 总体思路 输入二进制数 然后每八个为一个小单位分开 形成一个对应的十进制数 最终形成四个ip数 第二步 分别定义存放ip的数组 存放
  • C基础day8(2023.7.10)

    一 Xmind整理 二 课上练习 练习1 基本类型参数 include
  • C语言之——自定义数据类型

    目录 前言 什么是自定义数据类型 一 自定义数据类型之 数据类型命名 1 深入应用typedef 二 自定义数据类型之 结构体类型命名 1 深入理解struct结构体 三 自定义数据类型之 联合体类型命名 1 union与struct的区别

随机推荐

  • 阿里云物联网——MQTT协议---CONNECT

    什么是MQTT 1 1简介 MQTT的中文含义 消息队列遥测传输 MQTT的英文 Message Queuing Telemetry Transport 它是基于TCP IP协议 为硬件性能低下的远程设备和网络情况糟糕的情况下设计发布的发布
  • 邻接表的存储

    include
  • 计算机网络——TCP三次握手详解为什么两次不行

    文章目录 1 TCP报文段结构 2 三次握手 3 SYN洪泛攻击 4 为什么是 三次 TCP是面向连接的 connection oriented 即收发双方在发送数据之前 必须首先建立一个连接 这样在连接断开之前 就一直使用这个连接传输数据
  • js-数组遍历方法forEach和map的原理解析和实际应用

    数组遍历方法forEach和map的原理解析和实际应用 目录 数组遍历方法forEach和map的原理解析和实际应用 一 前言 二 代码 1 相同点 2 forEach 3 map 三 结语 一 前言 forEach和map是数组的两个方法
  • 人们热议的Web3究竟是什么?

    Web3已经是一个热词 几乎每个行业 甚至很多的人都可以从中讲到机会 那么这个机会究竟是什么呢 又该作哪些准备呢 作为一个新兴领域 加密圈盛产各种新概念 哪怕是随便关注下 就知道它总能产生源源不断的行业术语 诸如NFT DApp DeFi和
  • 测试sqlite数据库可承载数据量

    环境 vmvare10 1 ubuntu14 04 sqlite3 一 创建数据库 在当前文件夹下 执行以下命令 如已有数据库则打开 若没有则创建 二 创建所需表 Creat table mysqlitetest id TEXT name
  • 同学,同事,KTV聚会的小游戏

    1 吸心大全 搞个扑克用嘴吸住 传给旁边的人 他在吸过去 依次传下去 谁掉了就喝酒 2 两个人一队 一定要男女搭配哦 一个人口里含一口水或者饮料都可以 然后说裁判指定的话 由另一人来猜 规定时间里猜对最多的就算赢 3 弄个超大的骰子 这个估
  • 最小二乘法,最大似然估计

    最小二乘法 最大似然估计 一 最小二乘法 1 基本思想 2 作用 3 如何求解最小二乘法 二 最大似然估计 1 概念 2 似然估计的思想是 3 如何求解最大似然估计 三 最小二乘法和最大似然估计的联系和区别 四总结 一 最小二乘法 最小二乘
  • gamma分布的推导与理解

    1 概述 gamma分布与指数分布 泊松分布甚至其它一些混合分布有较为紧密的联系 本文通过对比与之相关的概率分布 建立某种联系并推导其概率密度函数 以便加深理解与认知 2 Gamma分布的必要性 在设置 Gamma 分布的两个参数 并将它们
  • Spring Cloud 学习笔记十五:搭建微服务工程之Knife4j 介绍及使用

    目录 Knife4j 介绍及使用 Knife4j 介绍及使用 Knife4j的前身是swagger bootstrap ui 前身swagger bootstrap ui是一个纯swagger ui的ui皮肤项目 具体介绍见官方文档 htt
  • 商业数据分析概论

    我正在和鲸社区参加 商业数据分析训练营活动 https www heywhale com home competition 6487de6649463ee38dbaf58b 以下是我的学习笔记 学习主题 波士顿房价数据快速查看 日期 202
  • Java进阶--编译时注解处理器(APT)详解

    本文同步发布在掘金 未经本人允许不得转载 上篇文章 Java进阶 Java注解及其实例应用 我们使用注解 反射实现了一个仿ButterKnife功能的示例 考虑到反射是在运行时完成的 多少会影响程序性能 因此 ButterKnife本身并非
  • JDBC连接数据库常用的一些配置项

    最近在服务器中部署服务遇到了一个连接超时的报错CommunicationsException 查找解决方法后发现可以通过配置JDBC重连来解决 添加 autoReconnect true failOverReadOnly false 配置在
  • pg_dump 命令

    pg数据库安装目录 bin 下面 有 pg dump exe cmd切换到 安装目录 bin 下 使用pg dump 命令 pg dump help 查看命令详情 导出sql语句 如下 将 10 20 25 224 主机的 数据库fdb11
  • [深度学习]更好地理解正则化:可视化模型权重分布

    在机器学习中 经常需要对模型进行正则化 以降低模型对数据的过拟合程度 那么究竟如何理解正则化的影响 本文尝试从可视化的角度来解释其影响 首先 正则化通常分为三种 都是在loss函数的基础上外加一项 L0 即不等于0的元素个数 L1 即所有元
  • 剪映电脑版_剪映如何剪视频?详细图文教程+更多进阶高级玩法,新手必看!...

    短视频的火爆 平台上出现了各式各样酷炫的视频 因此 许多人也想做出高逼格的视频 但相信大部分的人都会遇到这么一个难题 那就是从未接触过剪辑 不知道视频要怎么优化处理 今天这篇文章 就带着小伙伴们了解一款非常适合新手的手机剪辑软件一一剪映AP
  • Qt5教程: (4) 带参数信号与槽

    在subwidget h中声明一个signal 和之前的信号函数重名但是有参数 void backSignal QString 之后在subwidget cpp的槽函数sendSignal 中也发送该信号 emit backSignal 子
  • Java 爬虫遇到需要登录的网站,该怎么办?

    这是 Java 网络爬虫系列博文的第二篇 在上一篇 Java 网络爬虫 就是这么的简单 中 我们简单的学习了一下如何利用 Java 进行网络爬虫 在这一篇中我们将简单的聊一聊在网络爬虫时 遇到需要登录的网站 我们该怎么办 在做爬虫时 遇到需
  • 为什么uzi排到古手羽就秒_Uzi排到古手羽秒退,网友争相发表看法,直播间弹幕疑似给出答案...

    英雄联盟职业选手Uzi是一位热门人物 他在自己的职业生涯当中也取得过很多令人羡慕的职场比赛成就 因为自己征战的时间较久 多年来也累积了大批量的粉丝 因为他的努力与执着 如今也凝聚了不少喜欢他的真爱粉丝 甚至有不少黑他的粉丝都因此得出了感情
  • C语言面试高频问题:自己代码实现字符串相关的常用API

    参考 C语言面试高频问题 自己代码实现字符串相关的常用API 作者 图触靓 发布时间 2020 08 08 13 31 33 网址 https blog csdn net bhbhhyg article details 107878102