C语言字符串函数的一些实现

#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
/*
----------------------------------------------------------
    函数名                  作  用
----------------------------------------------------------
    itoa()                将整型值转换为字符串
    ltoa()                将长整型值转换为字符串
    ultoa()               将无符号长整型值转换为字符串

    atoi()
    atol()
    atof()
----------------------------------------------------------
*/

//上述函数与ANSI标准是不兼容的。能将整数转换为字符串而且与ANSI标准兼容的方法是使用sprintf()函数

//sprintf(str, " %d" , num);

/*
    函数名             作  用
-------------------------------------------------------------------------
    ecvt()    将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点
    fcvt()    以指定位数为转换精度,余同ecvt()
    gcvt()    将双精度浮点型值转换为字符串,转换结果中包含十进制小数点
-------------------------------------------------------------------------

*/


/*
    数字转字符 value + '0'
    字符转数字 ch -'0'
*/

int my_atoi(char* str)
{
    int value=0;

    while(*str >= '0' && *str <= '9')
    {
        value *= 10;
        value += *str-'0';
        str++;
    }
    return value;
}
/*
    拼接两个字符串
*/
char* my_strcat(char *dst, const char * src)
{
        char *dst_t; //新字符串
        //分配内存,否则返回的是局部变量
        dst_t = (char *)malloc(sizeof(dst) + sizeof(src));
        char *start = dst_t;
        assert(dst && src); // 断言是否为空
        while(*dst_t = *dst)
        {
                dst_t++;
                dst++;
        }
        while(*dst_t = *src)
        {
                dst_t++;
                src++;
        }
        *dst_t = '\0';
        return start;
}

char* my_strcpy(char *strDest, const char *strScr)
{
       char *address=strDest;
       assert((strDest != NULL) && (strScr != NULL));
       while(*strScr)
       {
              *strDest++ = *strScr++;
       }
       *strDest = '\0';
       return address;
}

int my_strcmp (const char *str1,const char *str2)
{
       int len = 0;
       assert((str1 != '\0') && (str2 != '\0'));
       while(*str1 && *str2 && (*str1 == *str2))
       {
              str1++;
              str2++;
       }
       return *str1-*str2;
}

int my_strlen(const char *str)
{
    int len = 0;
       assert(str != NULL);
       while(*str++)
       {
              len++;
       }
       return len;
}
int main ()
{
  int i;
  char buffer[256];
  printf ("Enter a number: ");
//fgets (buffer, 256, stdin);
  //i = my_atoi(buffer);

  char temp[100];
  //my_strcpy(temp,buffer);
  puts(temp);

  char t1[] = "hello";
  char* b = my_strcat(t1,"world");
  puts(b);
  //printf ("The value entered is %d. Its double is %d.\n",i,i*2);
  return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值