C/C++字符函数和字符串函数模拟实现与详解————长度不受限制的字符串函数

超详细讲解长度不受限制的字符串函数(保姆级教程!!!) 阅读详情

个人主页:点我进入主页

专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶

C语言刷题

欢迎大家点赞,评论,收藏。

一起努力,一起奔赴大厂。

目录

 

1.前言 

2strlen函数 

 3.strcpy函数

4.strcat函数

5.strcmp函数


 

1.前言 

        对于字符串这一部分我们想到的大部分是字符串的创建,const修饰字符串,指针指向字符串,字符指针,字符数组这些内容,实际上在C语言中有一些字符函数和字符串函数。C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串 中或者 字符数组中。字符串常量 适用于那些对它不做修改的字符串函数。

2strlen函数 

        对于strlen函数我们可以访问cplusplus网站cplusplus进行查阅,看一看strlen函数的参数是什么以及返回类型是什么样子的。b1d95859afe043a19e799ff492d654ef.png

         我们看到strlen函数的返回类型是size_t类型也就是无符号整数,它的类型是const char*str也就是字符串的地址,说到这里你有没有想到我们前面的笔试题,为什么在参数放字符元素会报错误,就是因为这里应该放字符的地址,由于字符串是用ASCLL码进行储存,二进制转化为十六进制,整形提升,就会形成一个野指针,产生报错。这个函数是计算字符的个数遇到’\0'结束,不计算’\0';例如我们想要计算某个字符串的长度,代码如下:

#include<stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcdef";
	size_t sz = strlen(arr);
	printf("%d\n", sz);
	return 0;
}

运行结果如下:

1ee0e2a3a2314fb198b5f20660abb35e.png

我们可以模拟实现一个strlen函数代码如下:

#include<stdio.h>
int my_strlen(const char* str)
{
	const char* p = str;
	while (*p != '\0')
	{
		p++;
	}
	return p - str;
}
int main()
{
	char arr[] = "abcdef";
	int ret = my_strlen(arr);
	printf("%d", ret);
	return 0;
}

        在这里我们主要用到指针减指针来计算字符的个数,当然我们也可以通过计数器或递归来进行操作,在这里不进行详细讲解。


 3.strcpy函数

        我们进入cplusplus网站进行查阅strcpy的参数

8afb6c22cee546d6b774e1aaa0899a5a.png

         我们可以看到strcpy函数的返回类型是char*参数是 char * destination, const char * source

第一个参数是想要修改的字符串的指针,第二个参数是想要得到的字符出的指针由于第二个参数不需要我们修改,难免会出现错误,用const进行修饰。特别注意我们需要保证源字符串的长度必须大于第二个字符串的长度,否则会造成栈溢出的问题,导致程序崩溃。例如我们可以写一个程序来感受一下此函数的功能,代码如下:

#include<stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcdef";
	char arr1[] = "aaa";
	strcpy(arr, arr1);
	printf("%s\n", arr);
	return 0;
}

运行结果如下:

3d08e896f8944990a3cedee949f9419f.png

我们对函数strcpy进行模拟,代码如下:

#include<stdio.h>
#include<assert.h>
void my_strcpy(char* str1, const char* str2)
{
	assert(str1 && str2);
	char* p = str1;
	while (*str2 != '\0')
	{
		*p = *str2;
		p++;
		str2++;
	}
}
int main()
{

	char arr[20] = { 'a','b','c'};
	const char arr2[] = "ba";
	my_strcpy(arr, arr2);
	printf("%s", arr);
}

        在这个函数中我们就是先记录字符串的首元素的地址,再定义指针进行赋值,直到‘\0’赋值完成,返回首元素的指针。

4.strcat函数

         我们进入cplusplus网站进行查阅strcat的参数

6a30913a45e54920be3f05ab0cc8939c.png

        此函数的返回类型是char*,参数是char * destination, const char * source,和strcpy函数一样它的第一个参数是想要修改的字符串的指针,第二个参数是想要得到的字符出的指针由于第二个参数不需要我们修改,难免会出现错误,用const进行修饰。我们想要进行字符串的连接,代码如下

#include<stdio.h>
#include <string.h>
int main()
{
	char arr[100] = { 'a','b'};
	char arr1[] = "aaa";
	strcat(arr, arr1);
	printf("%s\n", arr);
	return 0;
}

运行结果如下:

1b652a2673864f9fa794f6593698e778.png

我们对strcat函数进行模拟,代码如下:

#include<stdio.h>
#include<assert.h>
void my_strcat(char* str1, const char* str2)
{
	assert(str1 && str2);
	char* p = str1;
	while (*p != '\0')
	{
		p++;
	}
	while (*str2 != '\0')
	{
		*p = *str2;
		p++;
		str2++;
	}
	*p = *str2;
}
int main()
{
	char arr[20] = { 'a','b','d','e','f' };
	const char arr2[] = "ghi";
	my_strcat(arr, arr2);
	printf("%s", arr);
	return 0;
}

        在这里我们就是需要一个指针记录字符串的位置,一个移动,直到出现’\0‘然进修修改,注意需要两个字符串的总长度小于第一个字符串的容量。

5.strcmp函数

69253ccff649474a92abf69e2c7a252f.png

        此函数的返回类型是int,由于是对两个字符串进行比较所以不需要对字符串进行修改,所以用const进行修饰。

9586c1451a804d05a2047a89f85b4b5a.png

        它的返回值是整形,如果第一个字符串大于第二个返回大于0的数,小于返回小于0的数,等于返回0,比较就是逐个进行比较从第一个开始,相同则后移比较不同则进行比较返回结果。例如代码:

#include<stdio.h>
#include <string.h>
int main()
{
	const char arr[] = "abcdefg";
	const char arr2[] = "abcdf";
	int ret = strcmp(arr, arr2);
	if (ret > 0)
	{
		printf(">");
	}
	else if (ret < 0)
	{
		printf("<");
	}
	else
	{
		printf("=");
	}
	return 0;
}

运行结果如下:

cc359757c2e24ffe95312cc566039cb2.png

我们对strcmp进行模拟实现,代码如下: 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* str1, const char* str2)
{
	assert(str1&& str2);
	while (*str1 == *str2)
	{
		str1++;
		str2++;
	}
	return *str1 - *str2;
}
int main()
{
	const char arr[] = "abcdefg";
	const char arr2[] = "abcdf";
	int ret = my_strcmp(arr, arr2);
	if (ret > 0)
	{
		printf(">");
	}
	else if (ret < 0)
	{
		printf("<");
	}
	else
	{
		printf("=");
	}
	return 0;
}

和上面叙述的一样,先找到不同的字符,进行相减,然后判断。

今天的内容就结束了希望大家可以一键三连。

 

英飞凌 TC4X MCAL之SPI中断与DMA高效传输实战 本文详细介绍了英飞凌TC4X芯片的SPI通信实战,重点讲解如何通过MCAL配置SPI中断与DMA实现高效数据传输。针对汽车电子领域的高吞吐需求,提供了从基础配置到中断处理、DMA优化的完整解决方案,包含代码示例和调试技巧,帮助开发者提升系统性能与CPU利用率。 阅读详情

相关推荐

【鸿蒙游戏上架审核规范指南】

华为鸿蒙游戏上架审核规范指南摘要

weixin_44161102的博客 920

长度不受限制的字符串函数【详解+模拟实现】

遍历并拷贝该字符串中各个字符至目标地址,直到该字符串拷贝完’\0’,即拷贝结束;且在拷贝过程中,不受字符串的长度限制,该函数将字符串拷贝到另一块字符数组中,该函数会从目标字符串的’\0’处开始追加源字符串内的内容,直到’\0’结束。,该函数判断字符串的长度,且该函数在使用中,长度不受限制。在上面的使用过程中,可以看出该函数在追加的过程中,是。字符串函数即为在操作字符串中使用的一些函数,例如。,字面意思,即在使用该类函数对字符串进行操作时,从该结果可知,strcat函数在使用过程中,

小侯宝的博客 1083

2021年J题:基于STM32F103的周期信号波形识别与参数测量系统设计(立创EDA+SZPT_ZXL)

本文详细复盘了2021年全国大学生电子设计竞赛J题获奖项目,手把手教你如何基于STM32F103微控制器设计并实现周期信号波形识别与参数测量系统。文章深入剖析了硬件电路设计(包括程控放大、工作点抬升与滞回比较器)与核心软件算法(如动态采样、FFT频谱分析与波形识别逻辑),并分享了DMA传输、FFT库使用等实战要点与避坑指南,为嵌入式信号处理与电赛备赛提供了宝贵经验。

weixin_32673065的博客 230

c++ 输入不定长的字符数组

OJ题目中总会出现给定一个字符串,删除其中某些字符的题目,但输入不会给字符串的长度。 网上有的方法是先定义一个超大的数组,然后用这个大数组来储存数据,但我不喜欢这个方法,不但浪费空间,如果题目给定字符串大于这个大数组,还会报错 当然,也有用vector的,但是vector毕竟不是自己写实现的,用起来总有一点心虚 我一般用的方法是string 转 char数组,话不多说,上代码 void Array...

weixin_44062380的博客 4663

【RK3399】Android平台增加一款声卡设备(ES7210+ES8156),进行录音/播放测试。

文章目录前言一、开发环境二、概述三、硬件介绍1、ES72102、ES81563、数字麦克风阵列4、音频示意图四、下载SDK五、编译、烧写1、u-boot2、kernel3、Android SDK4、烧写分区5、烧写固件六、声卡驱动1、添加codec代码2、修改Kconfig3、修改Makefile4、修改rockchip_defconfig5、修改DTS七、声卡调试1、查看声卡注册信息2、使用tinycap/tinyplay录音和放音3、使用示波器观测八、修改HAL层1、修改默认capture/playba

rentong123的博客 2万+

一文读懂YOLO V5 与 YOLO V4

一文读懂YOLO V5 与 YOLO V4 YOLO之父Joseph Redmon在今年年初宣布退出计算机视觉的研究的时候,很多人都以为目标检测神器YOLO系列就此终结。然而在4月23日,继任者YOLO V4却悄无声息地来了。Alexey Bochkovskiy发表了一篇名为YOLOV4: Optimal Speed and Accuracy of Object Detection的文章。YOLO V4是YOLO系列一个重大的更新,其在COCO数据集上的平均精度(AP)和帧率精度(FPS)分别提高了10%

williamhyin的博客 8794

C/C++在不确定输入字符串长度情况下,对其进行存储和字符操作问题

在很多IT公司的编程笔试题中都会提到,输如长度未知的字符串以及整数数组进行各种操作,本文进行简单地归纳。 对于输入一行随意大小的(中间不含空格)字符串求其长度并输出指定位上字符,用C++可以编程为: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; using namespace std; ...

编码人生 2万+

PCL Super4PCS算法实现点云粗配准(版本一)【2025最新版】

Win11系统下实现[Super4PCS: Fast Global Pointcloud Registration via Smart Indexing一文中的配准算法。

点云侠的博客 3378

Python获取C++动态库传来的char*字段的两种思路

【代码】Python获取C++动态库传来的char*字段的两种思路。

qq_35769071的博客 775

架构师成长之路(1)--什么是架构师

前言: 哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。 如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做? 这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做), 执行/行动找准自己定位:我是谁?在哪里...

黄规速博客:学如逆水行舟,不进则退 6万+

ZW3D 二次开发-制作插件

1.Windows 7 SP1 或 Windows 10 或 Windows 11(推荐 Windows 11)2.Visual studio 2017-2022 (或 C/C++的任何其他集成开发环境)(推荐 Visual studio 2022)3.ZW3D 2023 或以上版本(建议使用与 ZW3D 一致的 API 的版本)4.Qt5.9.7(for Windows)博主学习使用环境的是:Windows 11 Version 24H2 + Visual studio 2022 + Qt5.9.7(fo

fhqiwmc的博客 812

C语言——字符和字符串函数

在我们进行编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了 ⼀系列库函数,使用字符函数和字符串函数分别包含头文件 <ctype.h>和头文件<strling.h>。下面我就简单介绍一下常用的字符和字符串函数。(本篇文章参考一、字符函数C 语言中有一系列的函数是专门做分类的,简单来说就是判断这个字符是属于什么类型的,而使用这些函数都需要包含一个下面我们就简单介绍一下这些函数(可点击直接跳跃查看具体介绍)函数所给参数若符合下列的条件,返回真iscntrl。

2301_80004913的博客 2058

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3476

C/C++字符函数和字符串函数详解————内存函数详解与模拟

前面学习了关于长度受限制的字符串函数和长度不受限制的字符串函数,其中strcmp对应strncmp函数,strcpy函数对应strncpy函数,strcat函数对应strncat函数,今天我们主要了解的是四个内存函数他们分别是memcpy函数,memmove函数,memset函数,memcmp函数。其中memcpy函数和strcpy函数的功能类似,memcmp函数和strcmp函数类似,接下来就让我们感受一下这些函数的魅力吧。

Infernal_Puppet的博客 2764

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

字符和字符串的库函数模拟与实现

字符函数和字符串函数的模拟和实现

weixin_74967884的博客 1377

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

字符串函数的使用与模拟

对于想了解一个C/C++的函数,我们可以访问网站,在里面进行查询函数的使用方式以及功能描述,我就把网站的描述贴在下面了:strlen是初始化的长度,并非存放字符串的空间长度。使用方式是字符串的长度取决于strlen是否识别到null字符(也就是\0),stlren会返回在字符串中出现'\0'前面的字符个数,在使用这个函数时要注意这一点。那我们来验证一下,请看如下代码int main()return 0;

qq_74073777的博客 1902

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

一篇博客学会系列(1) —— C语言中所有字符串函数以及内存函数的使用和注意事项

不能字符串自己追加自己,因为当自己追加自己的时候,追加的过程中会将目标字符串的 '\0' 覆盖掉,而有因为此时目标字符串就是源字符串,就会导致源字符没有 '\0' ,将会一直拼接下去导致死循环。2、因为strlen返回的是 '\0' 前面的字符个数,如果字符串中间本身就一个'\0',那么返回的值就会返回字符串中的'\0'之前的字符个数。在实际开发中,我们不一定知道这个字符串是怎样的,这个字符串需要切割几次的,因此手动设置切割几次将代码写死的方式是不可取,而应该使用。如果真有自己追加自己的场景,建议使用。

Hacynn的博客 2066

【C语言】字符函数和字符串函数详解

strncpystrncatstrncmp。

编程知识点梳理、项目经验总结、学习方法分享 2197

c语言自学教程——字符函数和字符串函数

strlen strcpy strcat strcmp strncpy strncat strncmp strstr strtok strerror memcpy memmove memcmp

qq_47882731的博客 1368

[C/C++]C语言中字符相关的库函数的模拟实现

本文主要介绍处理字符和字符串的库函数的功能及模拟实现。 1.对库函数按照功能可分为以下几类: (1)求字符串长度:strlen; (2)长度不受限制的字符串函数:strcpy、strcat、strcmp; (3)长度受限制的字符串函数:strncpy、strncat、strncmp; (4)字符串查找:strstr、strtok; ...

RMA515T的博客 9742

字符函数和字符串函数

求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数介绍 strncpy strncat strncmp 字符串查找 strstr strtok 错误信息报告 strerror 字符操作 内存操作函数 memcpy memmove memset memcmp

jk1206的博客 1051

【C语言】字符串函数和内存函数及其模拟实现

本篇整理了C语言中针对字符串或者字符数组的各种操作的库函数以及内存操作函数,包括其用法和模拟实现的过程。包括strcpy、strcar、strcmp、strstr、strtok、strerror、memcpy、memmove、memcmp;isalpha、isdigit、tolower、toupper等函数。

炸掉地球的博客 1466

C语言之字符函数&字符串函数篇(1)

终于结束指针了,但是还需要多多练习和复习。接下来我们进入字符函数和字符串函数的讲解。中秋和国庆即将来临,终于要放假了回家了。

m0_74841364的博客 688

字符串函数和内存函数

介绍一个很牛逼的网站cplusplus,c++的官方库,可以查到99%你在c++遇到的函数(注意我们用这些字符串函数时,可以进入C库-C++参考)这个网站上查询函数,可以看到官方库的函数是怎么个意思,很有价值,比在网上随便搜的正确性要高,不仅可以看到返回值,参数,还有使用场景等等,都可以看。用什么函数就搜什么函数就行,很方便注意我们用这些库函数的时候一定要包含头文件,比如strlen的头文件是string.h,大部分字符串函数都是这个头文件。

eixjdj的博客 1299

C语言 —— 让无人传颂的歌谣 再度启唱 - 字符函数与字符串函数

下一个标记,并将其用 \0 结尾。

hedhjd的博客 1306
上一篇: C/C++指针笔试题详解
下一篇: C/C++字符函数和字符串函数详解————长度受限制的字符串函数
steventom
博客等级 码龄4年 720粉丝 80原创
评论 51
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

steventom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值