模拟实现atoi strncat strncpy(注释)
Posted 只yao为你发光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟实现atoi strncat strncpy(注释)相关的知识,希望对你有一定的参考价值。
模拟实现atoi
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<ctype.h>
//模拟实现atoi
int My_Atoi(const char * str)
assert(str);//断言str不是空指针
int flag = 1;//为字符串的正负做标志
int ret = 0;//返回的数
if (*str == '\\0')//判断字符串是否为空
return 0;
while (isspace(*str))//判断不为空的字符串前面是否有空格
str++;
if (*str == '\\0')//判断字符串是否只有空格
return 0;
if (*str == '+')//判断字符串正负
str++;
if (*str == '-')//判断字符串正负
str++;
flag = -1;//字符串为负,flag为-1
while (isdigit(*str))//判断是否为数字
ret = ret * 10 + (*str - '0')*flag;
str++;
return ret;//返回结果
int main()
char str[] = "-123a45";
printf("%d\\n", My_Atoi(str));
return 0;
模拟实现strncat
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
//模拟实现strncat
char *My_Strncat(void * dest, const void *src, int num)
//断言不是空指针
assert(dest);
assert(src);
//定义返回地址
char * ret = dest;
//找到目的地字符串的最后一个字符
while (*(char *)dest != '\\0')
((char *)dest)++;
//在字符串后加字符
while (num)
*(char *)dest = *(char *)src;
((char *)dest)++;
((char *)src)++;
num--;
//给字符串最后一位加上'\\0'
*(char *)dest = '\\0';
return ret;
int main()
char str1[50] = "abcd";
char str2[] = "efgh";
My_Strncat(str1, str2, 3);
printf("%s\\n", str1);
return 0;
模拟实现strncpy
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
//模拟实现strncpy
char * My_Strncpy(void* dest, const void *src, int num)
//断言不是空指针
assert(dest);
assert(src);
//定义返回值指针
char *ret = dest;
//覆盖字符串dest的字符
while (num)
*(char *)dest = *(char *)src;
((char *)dest)++;
((char *)src)++;
num--;
//给末尾加字符串判断'\\0'
*(char *)dest = '\\0';
return ret;
int main()
char str1[50] = "abcd";
char str2[] = "efgh";
My_Strncpy(str1, str2, 3);
printf("%s\\n", str1);
return 0;
以上是关于模拟实现atoi strncat strncpy(注释)的主要内容,如果未能解决你的问题,请参考以下文章