关于字符串库函数的学习

KUKA机器人用于解析接收到的字符串的程序 KUKA机器人用于解析接收到的字符串的程序 STRFIND函数、Sread函数 阅读详情

一.strcpy(字符串复制函数)
函数介绍:char* strcpy(char * destination,const char * source)

我们称 destination为目标空间 source称为源字符串;

strcpy()函数将源字符串拷贝到目标空间;

注意:
1. 源字符串必须以'\0'结束。
2·会将源字符串中的'\0'拷贝到目标空间。
3·目标空间必须足够大,以确保能存放源字符串。·目标空间必须可变。
4·学会模拟实现.

错误示范:
1.arr1中没有结束标志'\0';所以在拷贝时出现错误,由于没有结束标志'\0'他会一直向后拷贝找\0;
char arr[]="asdfg";
char arr1[]={'b','i','t'};
2.当源字符串大小大于目标字符串空间时程序会崩溃;
char arr2[]="adf";
char arr3[]="ofdsfsd";
3.目标空间必须可以改变;
char* p="asdsaf";
char arr4[]="dsad";

关于字符指针赋值一个字符串时p中存放的是字符串首字母的地址;该字符串是常字符串;语法规定不能 改变常字符串的内容;

二.strlen(计算字符串长度的函数)

函数介绍:size_t strlen(const char*string);

首先我们要清楚的了解strlen和sizeof的区别和联系;

1.strlen专注于字符串的长度是字符串特有的计算函数;sizeof专注于数据所占内存空间的大小适用于多 种数据类型;

2.strlen是一个库函数,sizeof是一个操作符

体现于strlen(arr)计算arr字符串的长度时()不可以省略;sizeof(arr)计算大小时可以省略();

3.联系:它们都可以计算字符串的长度;strlen(arr),sizeof(arr)-1都表示字符串的长度;

sizeof(arr)减了1是因为sizeof计算时将\0也计算其中导致;
三. strcat(追加字符串)

它与strcpy多处相似
函数介绍:char * strcat ( char * destination,const char * source);

该函数将源字符串加到目标字符串的后面;从目标字符串的'\0'开始加.(覆盖\0)
1.源字符串必须以'\0'结束。
2.目标空间必须有足够的大,能容纳下源字符串的内容。目标空间必须可修改。
3.思考:字符串自己给自己追加,如何?
char arr5[30]="abc ";
char arr6[30]="defg";
strcat (arr5,arr6);
printf("%s",arr5);
四.strcmp函数(字符串比较函数)
strcmp用来比较两个字符串是否相等相等时返回0;第一个>第二个时返回1;第一个<第二个时返 回-1;
1.char arr1[20] = "zhangsan";比较的是字符串的内容而不是长度;对应相同位置字符的ASCII码值作 比较
char arr2[] = "zhangsanfeng" ;
2.char arr1[] = "abqdef";
char arr2[] = "abc" ;
两个字符串比较相等,应该使用strcmp

五.受限制的字符串函数
strcpy,strcat,strcmp是长度不受限制的字符串函数

不受限制就说明他是危险不可控的;

例如:
char arr3[4] ={0};
strcpy(arr3,"hello bit");
printf("%s\n", arr);

这里的源字符串放入目标空间时 空间是不够的会形成越界访问但是它任然可以被放进去,说明arr3的空间被改掉了(它擅自改掉了我们开辟的内存空间),运行时程序会崩溃;

strncpy,strncat,strncmp是长度受限制的字符串函数;

函数介绍:char *strncpy( char *strDest, const char *strSource, size_t count );
想要拷贝几个字符就添加参数n;
char arr1[20] ="abcdef";
char arr2[] ="hello bit";
strcpy(arr1, arr2);
strncpy(arr1,arr2,5); 如果源字符串有3个字符使用strncpy函数时想要拷贝5个字符 他会拷贝三 个后后面补充\0到第五个字符:bit\0\0;
printf("%s \n", arr1);

strncat
char arr1[20] = "hello";
char arr2[] ="world";
strncat(arr1, arr2,3);
printf("%s",arr1);
追加几个字符串就添加参数n个;但是在追加完成n个之后最后会自动补充一个\0;作为结束的标志; 注意:使用该函数之后目标字符串最后的结束标志'\0'是追加过来的;
char arr1[20] = "hello\0xxxxXx";
char arr2[] = "uiu";
strncat(arr1, arr2,6); 这里只有3个字符uiu但是要求追加6个字符串 不会像strncpy一样给他后面加\0;追加3个之后就结束;
strncmp函数;
char arr1[] = "abcdef";
char arr2[] = "abc";
int ret = strncmp(arr1,arr2,3); 想要比较几个字符就给函数一个n 的参数;
if(ret == 0)
printf("==\n");
else if (ret< 0)
printf("<\n");
else
printf(">\n");

六.strstr函数(在字符串里找子串);

函数介绍:char*strstr(const char*string,const char*strCharSet);

可以找到返回值是字符串里子串的起始位置;找不到返回NULL;

char a[] = "abcdefg";

char b[] = "abc";

char* ret = strstr(a,b);

if (ret == NULL)

{

printf("子串不存在\n");

}

else

{

printf("%s\n", ret);

}

情况1:abcdef里找abc;(easy)

情况2:abbbcdef里找bbc;

七.strtok函数(字符串分割函数)

函数介绍:char* strtok(char*strToken,const char*strDelimit);

分割函数它可以将字符串分割成我们想要的字符串 函数传参时传目标字符串的地址和分割字符的字符串集合;

const char* sep = "@."; 这里的@和.就是他的分割标志符号;在目标字符串中找到 @将他改成'\0'后返回起始地址;

char email[] = "shizhongxi@qq.com" ;

char cp[30] ={0};

strcpy(cp,email); 因为我们在使用strtok函数时会改变目标函数本身;所以在使用时可以新建一个字符 串空间拷贝过去再用;

char* ret = strtok(cp,sep);

printf("%s\n", ret);

ret = strtok(NULL, sep); 第一次传目标字符串地址;第二次第三次传 NULL看到空指针系统就知道了在 上次切割后的字符串的基础上继续切割;

printf("%s\n", ret);

ret = strtok(NULL,sep); 最后得到三段字符串;

printf("%s\n", ret);

strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。

strtok函数的第一个参数为NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记。

八.strerror(错误码信息返回函数)

每一个错误码都代表着一种库函数调用失败的错误信息;

printf( "%s \n", strerror(0));

printf( "%s \n", strerror(1));

printf( "%s \n", strerror(2));

printf("%s in", strerror(3));

printf("%s \n", strerror(4));

printf( "%s \n", strerror(5))

errno - C语言设置的一个全局的错误码存放的变量

errno.h是包含errno的头文件;

FILE* pf = fopen( "test.txt", "r"); fopen是一个打开文件的函数打开test.txt文件以ride的形式;如果 文件不存在 则打开失败返回一个错误码放在全局变量errno里;

if (pf == NULL) //pf是空指针说明打开失败;

{

printf("%s \n", strerror(errno)); 这里我们可以通过函数strerror来看错误的原因; 注意:errno存放 最新的错误码;

return 1;

}

九.字符分类函数

包含于头文件 ctype.h;

如果他的参数符合下列条件就返回真(非0数) 不符合则返回0;

iscntrl 任何控制字符

isspace 空白字符:空格'',换页\f,换行'\n',回车'\r',制表符'\t'或者垂直制表符'\v'

isdigit 十进制数字0~9

isxdigit 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F

islower 小写字母a~z

isupper 大写字母A~Z

isalpha 字母a~z或A~Z

isalnum 字母或者数字,a~z,A~Z,0~9

ispunct 标点符号,任何不属于数字或者字母的图形字符(可打印)

isgraph 任何图形字符

isprint 任何可打印字符,包括图形字符和空白字符*/

//字符转换:

int tolower( int );//大写字母转小写 //(int)表示字符的阿斯克码值;

int toupper( int );//小写字母转大写 //如果给的不是大小写字符而是特殊字符不改变;

}

库卡机器人高级字符串处理指令文档 库卡机器人高级字符串处理指令,可用于字符的切割和替换等 立即下载

相关推荐

字符串与整型和浮点数的相互转换

分别实现了字符串与整型数字之间的转换, 重点烛字符串与浮点数之间的转换

halt库卡_KUKA库卡机器人编程之字符串处理函数

在常规计算机语言(如:C#)中,字符变量的值是放在单引号内,字符串变量的值则是放在双引号内。而在库卡机器人KRL语言中,没严格意义上的字符串,只有基本字符数据类型,字符变量的值是放在双引号内,如果需要表示表示字符串,这时则需要适用字符数组来实现。本文主要以字符串处理函数展开的,接下来列出常用的系统自带的字符串处理函数。一.字符串变量转换其他数据类型:用 StrTo[…] 类型的函数可以将字符串变量...

weixin_39953356的博客 2934

kuka机器人高级编程CREAD_CWRITE

库卡机器人编程CWRITE用法介绍

字符串(详细讲解 )

C语言中的字符串虽然没有独立类型,但通过字符数组和指针的结合,可以灵活处理字符串操作。标准库提供了丰富的函数支持,让我们能够方便地进行字符串的基本和高级操作。但在使用时,需要格外注意内存管理和边界安全问题。

2401_88186301的博客 762

KUKA KR 30 hA,KR 60 hA机器人产品手册.pdf

KUKA KR 30 hA,KR 60 hA机器人产品手册pdf,KUKA KR 30 hA,KR 60 hA机器人产品手册

库卡机器人编程详解.pdf,这是一份不错的文件

库卡机器人编程详解.pdf,这是一份不错的文件

字符函数和字符串函数学习总结(字符串库函数模拟)

跟strcpy,strcat和strcmp函数使用方法大概一样,但是因为他们长度不受限制,所有有时候可能会不安全,而strncpy,strncat和strncmp函数长度在使用的时候会收到限制。终止空字符目标中的第一个字符被源的第一个字符覆盖,并且包含空字符位于目标中两者串联而成的新字符串的末尾。之前总结了指针的学习内容,真的很绕也很难,一起加油学习吧,今天总结一下新学的字符函数和字符串函(老规矩,小图来自鹏哥)因为课程时间有限,所以这节课先总结到了这里,只有上完课会继续总结当天学习内容,大家一起加油吧!

weixin_62409572的博客 1080

webpack性能优化-optimization.splitChunks.chunks中的“all“、“async“和“initial“

最初,chunks(以及内部导入的模块)是通过内部 webpack 图谱中的父子关系关联的。CommonsChunkPlugin 曾被用来避免他们之间的重复依赖,但是不可能再做进一步的优化。 ——摘自 webpack 从 webpack v4 开始,移除了 CommonsChunkPlugin,取而代之的是 optimization.splitChunks。 而关于 optimization.splitChunks 中的chunks,webpack 官方文档却没有很好的进行举例解释,只说明了 async.

程序员秋风的博客 3137

019day(字符串库函数的学习)

《2017年10月29日》【连续019天】 标题:字符串库函数的学习; 内容:A.观看MOOC7.3,7.4;            B.(a).使用字符串库函数需要#include&lt;cstring&gt;;字符串函数都是以'\0'判断字符串结尾;               形参为char [ ]类型,则实参可以是char数组或字符串常量; 1.字符串拷贝 strcpy(cha...

orangecloudy的博客 266

PLc S7-200 smart如何使用Modbus 485通讯传输接收数据

西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器,从而实现PLC通过modbus方式控制其他器件。提示:以下是本篇文章正文内容,下面案例可供参考。

xjbsw0的博客 6万+

【Telephony】APN配置及加载流程&项目实践(AOSP)

学习APN关键是学会明白apns-conf.xml文件各个参数的意思,然后熟悉TelephonyProvider是如何读取文件创建数据库的,譬如数据库表的约束、文件的读写顺序等,还有读取后的ApnSetting的二次定制以及显示(例如屏蔽xcap等)。虽然一般在项目中APN的需求很简单,就是按照客户提供的APN参数添加上配置,或者在显示屏蔽一些参数,但是项目维护的过程中APN的问题也是比较多的。

weixin_44513784的博客 5514

C语言学习笔记20260619-字符串库函数模拟实现

本文详细解析了C语言中四个核心字符串库函数(strlen、strcpy、strcat、strcmp)的模拟实现方法。通过计数器、递归和指针运算三种方式实现strlen;利用后置++的巧妙特性实现高效的strcpy;分两步完成strcat的字符串追加;以及考虑字符编码的strcmp实现。重点强调了const修饰符、断言保护、指针运算等关键技术,并指出了各函数的潜在风险(如strcat的内存重叠问题)和优化建议(如无符号字符比较)。这些底层实现不仅帮助理解标准库的工作原理,也是提升C语言编程能力的重要实践。

2503_92342417的博客 369

什么是深度展开网络?如何将迭代算法的每一次迭代展开成深度网络对应的一层?深度展开网络进行端对端训练,其中端对端是什么意思?

在深度学习和机器学习的背景下,“端到端”(End-to-end)训练指的是将输入数据直接映射到最终输出的过程,而不需要任何中间的手动数据预处理或特征工程。- **自然语言处理**:端到端自然语言处理系统可以将自然语言输入直接转化为计算机可理解的语言输出,而不需要对语言进行分解和转化。- **推荐系统**:通过使用深度神经网络,端到端推荐系统可以直接根据用户历史行为预测其未来的兴趣爱好,并推荐相应的产品或服务。4. **直接映射**:从输入到输出的直接映射,中间没有任何拆分或分解的过程。

m0_67897882的博客 5436

学习笔记6:字符串库函数(下)

关于字符串库函数

小青菜的博客 876

命令行删除描述文件_写一个删除lock文件的skill脚本

来源:IC技能搬运工 作者:小目Cadence软件使用过程中偶尔会遇到文件被lock的情况,这是Cadence软件对文件的一种保护措施,大部分情况都是对用户友好的,但是偶尔也会给用户带来困扰,给工作带来的一定的不便。文件是如何被锁的Cadence在用户打开文件进行编辑的时候会在文件的同一级目录新建一个lock文件,用来标识文件的状态。一般情况下如果文件被正常关闭,这个lock文件会在...

weixin_39781452的博客 1353

微信内置浏览器抓包全攻略:从ADB配置到Chrome调试(附常见问题解决)

本文提供了一套完整的微信内置浏览器抓包与调试解决方案。从ADB工具的深度配置与稳定性连接开始,详细讲解了如何开启X5内核调试开关,并利用Chrome DevTools建立远程连接。文章重点剖析了Network面板进行网络请求抓取、性能分析和问题定位的实战技巧,并附带了设备连接失败、无网络请求等常见问题的排查指南,帮助开发者高效解决微信H5页面调试难题。

gitlab7runner的博客 545

C/C++学习笔记:字符串库函数

1   // 入门级 char *strcpy(char *strDest, const char *strSrc) { if (NULL == strDest || NULL == strSrc) { return NULL; } if ( strDest == strSrc ) { return strDest; } char *tmpPtr = strDest;

banbanlin的专栏 713

2026星宸科技数字IC设计笔试带答案

摘要:本文包含四个计算机科学领域的编程与逻辑设计题目解析。第一部分通过C语言程序补充水仙花数判断代码,考查循环结构和函数设计;第二部分分析Verilog代码的D触发器电路,讨论时序约束与时钟频率影响;第三部分详细讲解静态时序分析中的建立/保持时间计算与违例判断;第四部分计算机体系结构题目涉及CPI、MIPS计算和性能加速比分析。最后还包含一个逻辑代数化简的示例,展示基本的布尔代数简化技巧。这些题目全面覆盖了编程基础、数字电路设计、时序分析和计算机性能评估等核心知识点。(149字)

Open 121

C语言学习笔记(3)-标准字符串库的一些函数实现

C语言学习笔记(3)——标准字符串库的一些函数实现以及const关键字1.使用指针实现标准库string.h中的一些函数2.const关键字的一些解读 1.使用指针实现标准库string.h中的一些函数 #include<stdio.h> //返回字符串的长度 int MyStrlen(const char* str){ int len = 0; #if 0 char*...

weixin_43357695的博客 197

080、多轴运动控制:插补器设计(螺旋线插补)

本文分享了螺旋线插补器设计的实战经验。针对五轴点胶机Z轴抖动问题,作者分析了螺旋线数学本质,提出基于归一化时间参数的速度规划方法,强调各轴严格同步的重要性。文章详细介绍了速度分解、加减速处理、嵌入式优化技巧(查表法、定点化),并总结了起点闭合、速度波动、数值处理等常见问题解决方案。最后给出5条实用建议:注重速度规划而非纯数学推导、预先仿真、保留调试接口、考虑机械谐振、防范编码器丢脉冲。通过优化插补周期、电子齿轮比和S形速度曲线,成功将设备良率从60%提升至95%。

m0_50546716的博客 86

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

c语言学习笔记24字符串与字符串库函数

整型数组:数组元素都是整形 int a[10];实型数组:数组元素都是小数 float a[10];指针数组:数组元素都是地址 int *a[10];字符数组:数组元素都是字符 char a[10];

2201_75620634的博客 1113

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

学习笔记3:字符串库函数模拟实现(上)

字符串库函数模拟实现

小青菜的博客 371

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

c语言学习笔记之字符串库函数和逗号表达式

c语言中的逗号表达式和字符串相关库函数

shaun2001的博客 639

自己动手写字符串库函数 一(C语言实现) 分类: C语言学习 ...

在coding中最常使用的就是对于字符串的处理问题,接下来我们自己动手写库函数,尽量使用指针操作,而不是数组操作 //头文件 string.h #include <stdio.h> #include <stdlib.h> //字符串结构体 typedef struct CString { char* str; int len; }string; //初始化...

weixin_34071713的博客 250

自己动手写字符串库函数 四(C语言实现) 分类: C语言学习 ...

上一篇 自己动手写字符串库函数 三(C语言) //重置 void my_StrSet(string *des, const char ch) { if (!IsEmpty(des)) return; else { char* des1 = des->str; int desLen = my_StrLen(des->str); while (de...

weixin_34315665的博客 182

算法笔记练习 3.6 字符串处理 问题 A: 字符串连接

题目链接 题目 题目描述 不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。 输入 每一行包括两个字符串,长度不超过100。 输出 可能有多组测试数据,对于每组数据, 不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。 输出连接后的字符串。 样例输入 Copy abc def 样例输出 Copy abcdef 思路 用两个字符数组 in1,i...

Gorgeoustray 425
上一篇: C语言:关于结构体
下一篇: C语言:判断一组数字是不是有序数组(一串相等的数也是有序)
dametime_
博客等级 码龄3年 230粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值