gpt4 book ai didi

c - 尝试用 C 语言制作整数到二进制转换器,但它只打印随机字符串

转载 作者:行者123 更新时间:2023-11-30 16:11:36 25 4
gpt4 key购买 nike

我现在正在学习 C,并且正在用 C 制作一个 Denary 到 Binary 转换器,并且遇到了这个我无法解决的问题

// Includes
#include <stdio.h>
#include <math.h>

typedef enum {false,true} bool;

// intToBinary Function
char* intToBinary(int d)
{
bool not0 = true;

char* outputstr = "";

while(not0 == true)
{
int d = floor(d/2);

int rem = d % 2;

char num = rem;

outputstr += (char)num;

if(d==0)
{
printf("%s\n",outputstr);
return outputstr;
}
}
}

// Main Function
int main()
{
int inp;
printf("Enter A Number To Be Converted\n");
scanf("%d", &inp);

char* out = (char*)intToBinary(inp);

printf(out);
return 0;
}

我不知道为什么,但我得到的唯一输出是:r 待转换&r 待转换(它会重复)

我正在 Windows 10 上使用 msys 进行编译

如果你知道我做错了什么,可以告诉我吗?谢谢

最佳答案

char* outputstr = "";

您根本不应该修改该字符串。它驻留在实现定义的只读区域中。修改它会导致未定义的行为。

您需要一个字符数组而不是字符串文字。

好读:char a[] = "string"; 和有什么区别和 char *p = "字符串";

试试这个:

// Includes
#include <stdio.h>
#include <math.h>

typedef enum {false,true} bool;

char * append(char * string1, char * string2)
{
char * string3 = (char *) malloc(1 + strlen(string1)+strlen(string2) );
strcpy(string3, string1);
strcat(string3, string2);
return string3;
}

// intToBinary Function
char* intToBinary(int d)
{
bool not0 = true;

char* outputstr = "";

while(not0 == true)
{
d = d/2;

int rem = d % 2;

char num = (char)(rem+48);

char *s = &num;

outputstr = append(outputstr, s);


if(d==0)
{
printf("%s\n",outputstr);
return outputstr;
}
}
}

关于c - 尝试用 C 语言制作整数到二进制转换器,但它只打印随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58573706/

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