gpt4 book ai didi

c - 实现一个好的 "itoa()"函数的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 16:50:54 26 4
gpt4 key购买 nike

我想知道我对“itoa”函数的实现是否正确。也许你可以帮助我让它更“正确”一点,我很确定我错过了一些东西。 (也许已经有一个库按照我想要的方式进行转换,但是......找不到)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

char * itoa(int i) {
char * res = malloc(8*sizeof(int));
sprintf(res, "%d", i);
return res;
}

int main(int argc, char *argv[]) {
...

最佳答案

// Yet, another good itoa implementation
// returns: the length of the number string
int itoa(int value, char *sp, int radix)
{
char tmp[16];// be careful with the length of the buffer
char *tp = tmp;
int i;
unsigned v;

int sign = (radix == 10 && value < 0);
if (sign)
v = -value;
else
v = (unsigned)value;

while (v || tp == tmp)
{
i = v % radix;
v /= radix;
if (i < 10)
*tp++ = i+'0';
else
*tp++ = i + 'a' - 10;
}

int len = tp - tmp;

if (sign)
{
*sp++ = '-';
len++;
}

while (tp > tmp)
*sp++ = *--tp;

return len;
}

// Usage Example:
char int_str[15]; // be careful with the length of the buffer
int n = 56789;
int len = itoa(n,int_str,10);

关于c - 实现一个好的 "itoa()"函数的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com