栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

模拟实现(strncpy)(strncat)(atoi)(C语言)(VS)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

模拟实现(strncpy)(strncat)(atoi)(C语言)(VS)

文章目录
  • 前言
  • 一、模拟实现strncpy
  • 二、模拟实现strncat
  • 三、模拟实现atoi
  • 看完记得给个三连,谢谢


前言

  这是我对库函数的模拟实现,希望对大家有帮助。


一、模拟实现strncpy



#include
#include

//“简洁”版
char* my_strncpy(char* strDest, const char* strSource, size_t count)
{
	assert(strDest && strSource);
	const char* tmp_strDest = strDest;
	while ((*strDest++ = *strSource++) != '' && count--);
	while ((--count) || (*strDest++ = ''));
	return tmp_strDest;
}
//正常版
char* my_strncpy(char* strDest, const char* strSource, size_t count)
{
	assert(strDest && strSource);
	const char* tmp_strDest = strDest;
	while (*strSource && count)
	{
		*strDest++ = *strSource++;
		count--;
	}
	while (count--)
		*strDest++ = '';
	return tmp_strDest;
}

二、模拟实现strncat




//“简洁”版
//char* my_strncat(char* strDest, const char* strSource, size_t count)
//{
//	assert(strDest && strSource);
//	char* tmp_strDest = strDest;
//	while (*++strDest);
//	while ((count--) && (*strDest++ = *strSource++));
//	return tmp_strDest;
//}
//正常版
char* my_strncat(char* strDest, const char* strSource, size_t count)
{
	assert(strDest && strSource);
	char* tmp_strDest = strDest;
	while (*strDest)
		strDest++;
	while (count && *strSource)
	{
		*strDest++ = *strSource++;
		count--;
	}
	return tmp_strDest;
}

三、模拟实现atoi




#include 
#include 
#include 
#include 
#include 

enum State
{
    VALID,
    INVALID
}state = INVALID;

int my_atoi(char* str)
{
    assert(str);
    int flag = 1;
    long long ret = 0;
    state = INVALID;
    while (isspace(*str))
        str++;
    if (*str == '')
        return 0;
    if (*str == '+')
    {
        str++;
    }
    else if (*str == '-')
    {
        flag = -1;
        str++;
    }
    while (isdigit(*str))
    {
        ret = ret * 10 + flag * (*str - '0');
        if ((ret > INT_MAX) || (ret < INT_MIN))
            return 0;
        str++;
    }
    if (*str == '')
    {
        state = VALID;
        return (int)ret;
    }
    return (int)ret;
}

看完记得给个三连,谢谢
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号