字符串函数strchr,strrchr,strrstr,strncat()函数,strncpy()函数 ,strncmp()函数 ,
来源:互联网 发布:群晖nas装windows 编辑:程序博客网 时间:2024/06/07 21:40
#include<stdio.h> #include<stdlib.h> #include<assert.h> char *my_strchr(const char *dst, char c) //由于我们只是查找,不修改这个字符串,所以将dst声明成const { assert(dst); //先对字符串进行断言 const char *pdst = dst; //将字符串其实位置保存下来 while (*pdst) { if (*pdst == c) //找到就返回这个地址 return (char *)pdst; else pdst++; } return NULL; //没找到返回空 } int main() { char c=0; char arr[40]={0}; char * = NULL; scanf("%c", &c); scanf("%s", arr); str=my_strchr(arr, c); printf("%#p\n",*str); system("pause"); return 0; } #include<stdio.h> #include<stdlib.h> #include<assert.h> char *my_strrchr(const char *src, char c) //由于我们只是查找,不修改这个字符串,所以将src声明成const { assert(src); //<span style="font-family:Arial,Helvetica,sans-serif">先对字符串进行断言</span> const char *psrc = src; char *dst = NULL; while (*psrc) { if (*psrc == c) dst =(char *) psrc; //用标签记录找到的位置 psrc++; } return dst; } int main() { char c = 0; char arr[40]; char *place = NULL; scanf("%c%s", &c, arr); place = my_strrchr(arr, c); printf("%#p\n",place); system("pause"); return 0; } //strrstr库里面没有,我们仿照strchr这个函数的功能实现一个strrstr #include<stdio.h> #include<stdlib.h> #include<assert.h> char *my_strrstr(const char *dst, const char *src) { assert(dst); assert(src); const char *pdst = dst; const char *psrc = src; char *right= NULL; while (*dst) { while (*pdst == *psrc) { if (*pdst== '\0') //如果*pdst为‘\0'则已经找到最后一个 return right=(char *)dst; else { pdst++; psrc++; } } if (*psrc == '\0') //找到一个,但不确定是不是最后一个 right = (char *)dst; pdst = ++dst; psrc = src; } return right; } int main() { char arr1[50] = { 0 }; char arr2[40] = { 0 }; char *place = NULL; scanf("%s%s",arr1, arr2); place = my_strrstr(arr1, arr2); printf("%#p\n",place); //输出这个地址 system("pause"); return 0; }
strncat()函数 首先要说的是strncat函数 函数原型: char *strncat(char *dest,const
char *src,size_t len);
strncat就是把src中的最多len个字符复制到目标数组的后面,但是,strncat总是在结果的字符加一个NUL字节。
//实现strncat函数#include<stdio.h>#include<stdlib.h>#include<assert.h>char *my_strncat(char * str1,const char* str2,size_t n){ assert(str1); assert(str2); char *ret = str1; while (*ret) { ret++; } while (n) { *ret = *str2; ret++; str2++; n--; } *ret = '\0'; return str1;}int main(){ char str1[20] = "abcd"; char *str2 = "132"; my_strncat(str1, str2,8); printf("%s\n", str1); system("pause"); return 0;}
strncpy()函数 函数原型:char *strncpy(char *dest,const char *src,size_t
len); strncpy把源字符串的字符复制到目标数组,strncpy()会将字符串src前n个字符拷贝到字符串dest。
不像strcpy(),strncpy()不会向dest追加结束标记’\0’,这就引发了很多不合常理的问题,将在下面的示例中说明。
它总是正好向dest写入len个字符,如果strlen(src)的值小于len,dest数组就用额外的NUL字节填充到len长度。如果stelen(src)的值大于或者等于len,那么只有len个字符被复制到dest中。注意:它的结果将不会以NUL字节结尾。
#include<stdio.h>#include<stdlib.h>#include<assert.h>char *my_strncpy(char *str1, const char *str2, int n){ assert(str1); assert(str2); char *ret = str1; while ((n>0)&&(*str2)) { *ret++ = *str2++; n--; } *ret = '\0'; return str1;}int main(){ char str1[20] = "abcd"; char *str2 = "cb78979"; my_strncpy(str1, str2, 3); printf("%s", str1); system("pause"); return 0;}
strncmp()函数
strcmp函数用来比较两个字符串,但它比较len个字节,如果两个字符串在第len个字符之前存在不相等的字符,也就是说,如果字符串s1与s2的前size个字符相同,函数返回值为0
#include<stdio.h>#include<stdlib.h>#include<assert.h>int my_strncmp(const char *str1,const char* str2,int n){ assert(str1); assert(str2); while (n-1) { if (*str1&&*str2&&*str1 == *str2) { str1++; str2++; n--; } else break; } return *str1 - *str2;}int main(){ char str1[20] = "abcd"; char *str2 = "cbce"; int ret = my_strncmp(str1, str2, 1); if (ret > 0) printf("字符串不相等"); else if (ret < 0) printf("字符串不相等"); else printf("字符串相等"); system("pause"); return 0;}
阅读全文
0 0
- 字符串函数strchr,strrchr,strrstr,strncat()函数,strncpy()函数 ,strncmp()函数 ,
- 【C语言】模拟实现strncpy strncat strncmp strchr strrchr函数
- 模拟实现 strncpy strncat strncmp strchr strrchr 函数
- 关于字符串函数的一些代码实现(strncpy strncat strncmp strchr strrchr)
- 字符串函数strchr 、 strrchr 、strrstr的实现
- 有意思的字符串查找函数strchr,strrchr,strstr,strrstr
- 模拟实现strchr,strrchr,strstr,strrstr函数
- 字符串函数(strcpy strncpy strcat strncat strcmp strncmp memcpy memmove)
- 字符串函数——strcpy 、strncpy 、strcat、 strncat、 strcmp 、strncmp、 memcpy、 memmove)
- 模拟实现长度受限制的字符串函数(strncpy、strncat、strncmp)
- c语言中部分限制字符函数的实现strncmp,strncat,strncpy,strstr,strrstr
- 模拟输出受限制的字符串函数-strncat,strncmp,strncpy
- strchr()、strrchr()、strchrnul()函数
- strchr/strrchr函数使用
- strchr函数和strrchr函数
- 模拟实现C语言strncpy.strncat.strncmp函数
- strcpy、strcat函数源码,strncpy,strncat,strncmp,strtok
- 【C语言】模拟实现strncpy、strncat、strncmp函数
- cocos2dx 的历史版本下载
- [NOIP模拟赛]大整数的幂
- poj 1860
- 生成小程序支付的prepay_id-小程序支付开发-视频教程
- 怠惰是贫穷的制造厂 jzoj 2017.8.18 B组
- 字符串函数strchr,strrchr,strrstr,strncat()函数,strncpy()函数 ,strncmp()函数 ,
- Django的MVC架构(5)
- SQL ISNULL 函数
- 生成小程序支付签名paysign
- 用docker搭建全栈式应用(一)基础篇
- 城市列表实现
- Hadoop之HDFS(分布式文件系统)-yellowcong
- 【原创】【程序小游戏】从井字棋下到30子棋!可以扩充棋盘的棋!
- SQL的Convert函数详解