gpt4 book ai didi

c - 十进制到二进制函数的段错误 11

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:50 27 4
gpt4 key购买 nike

我有一个将十进制转换为二进制并返回二进制 char * 的函数:

void decimal2binary(int decimalNum, int size, char * charPtr){
int decimalTemp = decimalNum;
int modNum;

for(int sizeTemp = size; sizeTemp >= 0; --sizeTemp){
modNum = decimalTemp >> sizeTemp;

if(modNum & 1){
strcat(charPtr, "1");
}else{
strcat(charPtr, "0");
}
}
}

当我尝试在 main 中测试它时,我得到了正确的输出,然后使用 gcc 编译器得到了“Segmentation fault 11”:

在 int main() 中:

char testArr[] = "test";
char * foo = testArr;
decimal2binary(10,7, foo);
printf("%s\n", foo);
printf("asdasds\n");

结果:

test00001010
asdasds
Segmentation Fault: 11

有什么想法吗?

最佳答案

您传入的数组大小为 5 - "test\0"。当您在无效的内存位置写入时,它不会“工作”。更像是未定义的行为。

编辑:

如果您不知道要传入的缓冲区的大小,建议可能是使用 realloc 并增大数组。返回指针,但记得释放分配的内存。

关于c - 十进制到二进制函数的段错误 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875711/

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