【发布时间】:2016-10-08 07:42:37
【问题描述】:
我正在针对我的 itoa() 函数运行一些测试用例,但不断得到 p>
did not allocate memory for the int min value
我正在检查,但我在这里遗漏了一些东西,它是什么?
char *ft_itoa(int x) {
char *s;
size_t len;
long int n;
n = x;
if (x == -2147483648)
return (ft_strdup("-2147483648"));
len = ft_intlen(n) + 1;
if (!(s = (char*)malloc(sizeof(char) * len)))
return (NULL);
if (n == 0)
s[0] = '0';
if (n < 0) {
s[0] = '-';
n = -n;
}
s[len - 1] = '\0';
while (n) {
len--;
s[len - 1] = (n % 10) + '0';
n /= 10;
}
return (s);
}
【问题讨论】:
-
您需要发布 ft_intlen 函数的完整代码
-
就是完整的代码,strdup只是分配字符串,ft_intlen只是返回字符串的长度,都通过测试用例
-
你的系统中 int 的大小是多少?
-
您还想决定是使用 C 还是 C++。标题声明 C,转换
malloc()表示 C++,问题标记为 ... -
ft_intlen很重要,你应该展示它,但如果你不想展示它,那就这样。您还需要显示失败的测试用例。