C 中参数的整数; gdb 没有显示错误,函数没有给出输出
inteager to argument in C; gdb shows no errors, function is not giving output
**
你好:)
所以我的任务是编写一个程序,使用 malloc 将 int 转换为 arg,一切正常,gdb 没有显示任何错误,但它没有以这种形式打印任何输出。如果我删除 itoa_buffer[i] = '\0';有时它有时不显示输出。我不知道这里有什么问题,看起来很好。
我不知道去哪里寻求帮助,因为我喜欢按照自己的逻辑在这里查找错误,而不是从互联网上复制解决方案。我会很感激一些提示,这可能是一些我不知道的小事,不会让我更进一步。**
#include<stdio.h>
#include "libft.h"
char *ft_itoa(int n)
{
int i;
int z;
char x;
char *itoa_buffer;
if (n == INT_MIN)
return(ft_strdup("-2147483648"));
if (n < 0)
{
n = -n;
z = n;
i = 1;
}
else
{
z = n;
i = 0;
}
while(z > 0)
{
z = z/10;
i++;
}
if(!(itoa_buffer = (char *)malloc((i+1)*sizeof(char))))
return(0);
i = i + 1;
while(--i)
{
x = (n%10 + '0');
itoa_buffer[i] = x;
n = n/10;
if(n == 0 && i == 2)
{
i--;
itoa_buffer[i] = '-';
i--;
break;
}
}
itoa_buffer[i] = '[=10=]'; // it stopped showing answers when i tried to add this symbol at the end.
return(itoa_buffer);
}
int main()
{
int n;
n = 1980;
printf("%s", ft_itoa(n));
}
您将 '[=12=]'
作为字符串的第一个字符。
而不是那个,你应该把它作为最后一个字符。
代替这部分
i = i + 1;
while(--i)
{
x = (n%10 + '0');
itoa_buffer[i] = x;
n = n/10;
if(n == 0 && i == 2)
{
i--;
itoa_buffer[i] = '-';
i--;
break;
}
}
itoa_buffer[i] = '[=10=]';
你应该这样做
itoa_buffer[i] = '[=11=]';
while(i--)
{
x = (n%10 + '0');
itoa_buffer[i] = x;
n = n/10;
if(n == 0 && i == 1)
{
i--;
itoa_buffer[i] = '-';
break;
}
}
** 你好:)
所以我的任务是编写一个程序,使用 malloc 将 int 转换为 arg,一切正常,gdb 没有显示任何错误,但它没有以这种形式打印任何输出。如果我删除 itoa_buffer[i] = '\0';有时它有时不显示输出。我不知道这里有什么问题,看起来很好。
我不知道去哪里寻求帮助,因为我喜欢按照自己的逻辑在这里查找错误,而不是从互联网上复制解决方案。我会很感激一些提示,这可能是一些我不知道的小事,不会让我更进一步。**
#include<stdio.h>
#include "libft.h"
char *ft_itoa(int n)
{
int i;
int z;
char x;
char *itoa_buffer;
if (n == INT_MIN)
return(ft_strdup("-2147483648"));
if (n < 0)
{
n = -n;
z = n;
i = 1;
}
else
{
z = n;
i = 0;
}
while(z > 0)
{
z = z/10;
i++;
}
if(!(itoa_buffer = (char *)malloc((i+1)*sizeof(char))))
return(0);
i = i + 1;
while(--i)
{
x = (n%10 + '0');
itoa_buffer[i] = x;
n = n/10;
if(n == 0 && i == 2)
{
i--;
itoa_buffer[i] = '-';
i--;
break;
}
}
itoa_buffer[i] = '[=10=]'; // it stopped showing answers when i tried to add this symbol at the end.
return(itoa_buffer);
}
int main()
{
int n;
n = 1980;
printf("%s", ft_itoa(n));
}
您将 '[=12=]'
作为字符串的第一个字符。
而不是那个,你应该把它作为最后一个字符。
代替这部分
i = i + 1;
while(--i)
{
x = (n%10 + '0');
itoa_buffer[i] = x;
n = n/10;
if(n == 0 && i == 2)
{
i--;
itoa_buffer[i] = '-';
i--;
break;
}
}
itoa_buffer[i] = '[=10=]';
你应该这样做
itoa_buffer[i] = '[=11=]';
while(i--)
{
x = (n%10 + '0');
itoa_buffer[i] = x;
n = n/10;
if(n == 0 && i == 1)
{
i--;
itoa_buffer[i] = '-';
break;
}
}