900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C语言库函数strncpy strncat strncmp函数的模拟实现

C语言库函数strncpy strncat strncmp函数的模拟实现

时间:2023-01-12 02:00:04

相关推荐

C语言库函数strncpy strncat strncmp函数的模拟实现

strncpy,strncat,strncmp函数的模拟实现

#include<stdio.h>void my_strncpy(char* arr1,const char* arr2,int n){for(int i = 0;i<n;i++){*arr1++ = *arr2++;}*arr1 = '\0';;}int main(){char arr1[] = "abcdef*";char arr2[] = "abef";my_strncpy(arr1,arr2,3);printf("%s",arr1);return 0;}

(解析)

1.strncpy函数较strcpy函数多了一个大小的变量n,即我能指定拷贝几个字符,我自己说了算

2.变化就是加了一个循环控制n次,每一次拷贝一个字符,然后地址加一,不再将’\0’作为拷贝结束的标志

3.因为拷贝未涉及‘\0’,所以最后加上一个‘\0’为宜,避免拷贝完‘\0’也被替换

#include<stdio.h>void my_strncat(char* arr1,const char* arr2,int n){while(*arr1){arr1++;}for(int i = 0;i<n;i++){*arr1++ = *arr2++;}*arr1 = '\0';}int main(){char arr1[30] = "abcdef*";char arr2[30] = "abef";my_strncat(arr1,arr2,3);my_strncat(arr2,arr2,4);printf("%s\n",arr1);printf("%s\n",arr2);return 0;}

(解析)

1.strncat函数意思是我指定几个字符追加到一个字符串上去,可以实现一个字符串的自我叠加(strcat不行,因为‘\0’会在一开始被取代)

2.指定字符个数的思路仍然是循环控制

3.先找到要被加的字符串的‘\0‘位置,随后开始叠加n次,最后补上’\0‘

#include<stdio.h>int my_strncmp(const char* arr1,const char* arr2,int n){while(n--){if(*arr1 == *arr2){arr1++;arr2++;continue;}elsereturn (int)(*arr1 - *arr2);}return 0;}int main(){char arr1[] = "abcdef*";char arr2[] = "abef";printf("%d\n",my_strncmp(arr1,arr2,2));printf("%d\n",my_strncmp(arr1,arr2,3));return 0;}

(解析)

1.比较n个字符,用循环思想控制次数

2.如果字符相同,则地址一起++,比较下一个字符,如果不一样,跳出循环直接返回ASC码差值

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。