![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言库函数的模拟实现
bfsm
这个作者很懒,什么都没留下…
展开
-
strncpy库函数模拟实现
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>char* myStrncpy(char* destin, const char* source, size_t num) { if (destin == NULL || source == NULL) { return NULL; } int原创 2020-12-29 09:24:53 · 138 阅读 · 0 评论 -
strncat库函数模拟实现
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>char* myStrncat(char* destin, const char* source, size_t num) { if (destin == NULL || source == NULL) { return NULL; } int原创 2020-12-29 09:24:43 · 139 阅读 · 0 评论 -
atoi库函数模拟实现
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int myAtoi(const char* str) { char TS[1024] = { 0 }; char* ts = TS; //设置符号位,用来判定这样的情况:不见可字符,数字,不可见字符,数字 //如果前面为不可见字符,在遇到数字后,flag1就++,这样就不会进入后面的不可见字符原创 2020-12-29 09:24:36 · 74 阅读 · 0 评论 -
memcpy库函数模拟实现
第一次尝试#include<stdio.h>#include<stdlib.h>void* myMemcpy(void* destin, void* source, int num) { if (destin == NULL || source == NULL) { return NULL; } char* dest = (char*)destin; char* sour = (char*)source; for (in原创 2020-12-28 08:31:58 · 73 阅读 · 0 评论 -
memmove库函数模拟实现
第一次尝试#include<stdio.h>#include<stdlib.h>void* myMemmove(void* destin, const void* source,size_t num) { if (destin == NULL || source == NULL) { return NULL; } char* sour = (char*)source; char* dest = (char*)destin;原创 2020-12-28 08:31:45 · 78 阅读 · 0 评论 -
字符串strlen库函数模拟实现
第一次尝试#include<stdio.h>#include<stdlib.h>size_t myStrlen(const char* str) { if (str == NULL) { return NULL; } size_t ret = 0; while (*str != '\0') { str++; ret++; } return ret;}int main() {原创 2020-12-28 08:31:19 · 129 阅读 · 0 评论 -
字符串strcpy库函数模拟实现
第一次尝试#include<stdio.h>#include<stdlib.h>char* myStrcpy(char* str1, const char* str2) { if (str1 == NULL || str2 == NULL) { return NULL; } char* str = str1; while (*str2 != '\0') { *str1 = *str2; str1+原创 2020-12-28 08:31:09 · 121 阅读 · 0 评论 -
strcmp库函数模拟实现
第一次尝试#include<stdio.h>#include<stdlib.h>int myStrcmp(const char* str1,const char* str2) { if (str1 == NULL || str2 == NULL) { return NULL; } while (*str1 != '\0' || *str2 != '\0') { if (*str1 == *str2) {原创 2020-12-28 08:30:57 · 147 阅读 · 0 评论 -
strcat库函数模拟实现
第一次尝试#include<stdio.h>#include<stdlib.h>char* myStrcat(char* str1,const char* str2) { //参数合法性检验 if (str1 == NULL || str2 == NULL) { return NULL; } int num = 0; while (str1[num] != '\0') { num++; }原创 2020-12-28 08:30:28 · 155 阅读 · 0 评论 -
strstr库函数模拟实现
第一次尝试#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX 1024const char* myStrstr(const char* str1,const char* str2) { // 由于无法保证调用者传入一个啥样的参数. 比如极端情况下传入一个非法地址. // 就需要尽量让代码能比较健壮. // 应该在函数的入口处加上对于参数合法性的校验原创 2020-12-28 08:30:20 · 60 阅读 · 0 评论 -
sort冒泡排序模拟实现
第一次尝试#include<stdio.h>#include<stdlib.h>typedef void(*CMP)(int*, int*);CMP Bubbup(int* m, int* n) { if (*m > * n) { int t = 0; t = *m; *m = *n; *n = t; }}CMP Bubbdown(int* m, int* n) {原创 2020-12-26 09:47:56 · 246 阅读 · 0 评论 -
strlen的递归和非递归模拟
第一次尝试:#include<stdio.h>#include<stdlib.h>int StrlenCopy1(char arr[]) { if (arr[0] == '\0') { return 0; } else { return 1+StrlenCopy1(arr + 1); }}int StrlenCopy2(char arr[]) { int count = 0; for (in原创 2020-12-21 08:40:58 · 58 阅读 · 2 评论