gpt4 book ai didi

c - 来自命令行参数的输入有效,但来自内部 char* 的输入给出总线错误。不应该是一样的吗?

转载 作者:行者123 更新时间:2023-11-30 14:23:27 26 4
gpt4 key购买 nike

我编写了一个函数,它将采用 char*代表一个二进制数,并将该数加一。我遇到了一个非常令人困惑的错误,即当 char* 时,该函数工作正常且花哨。来自调用函数时的用户输入(又名 argv[1] ),但给了我一个 Bus error: 10当我在内部初始化变量并将其传递给同一个函数时。我不确定这背后是什么,所以我向你们求助。这是我的代码:

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

void addOneBinaryMain(char* strBiNum, int index)
{
if (strBiNum[index] == '0' || index == 0) { //BUS ERROR OCCURS HERE
strBiNum[index] = '1';
return;
} else {
strBiNum[index] = '0';
addOneBinaryMain(strBiNum, index - 1);
}
}

void addOneBinary(char* strBiNum)
{
addOneBinaryMain(strBiNum, strlen(strBiNum)-1);
}

int main(int argc, char* argv[]) {
char* str = argv[1];
char* strZero = "00000000";
int i;

printf("%s\n", str);
printf("%s\n", strZero);

addOneBinary(str);
printf("added one to input string: %s\n", str); //succeeds
addOneBinary(strZero);
printf("added one to internal zero string: %s\n", strZero);

return 0;
}

根据打印语句的错误,它似乎发生在 addOneBinaryMain 中函数(递归步骤),在我标记的位置。

最佳答案

strZero 指向一个常量字符串,不能更改

关于c - 来自命令行参数的输入有效,但来自内部 char* 的输入给出总线错误。不应该是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850557/

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