我写了一个函数,将采取代表一个二进制数的char*
,并添加一个该数字。我遇到了一个非常容易混淆的错误,那就是当函数调用函数(argv[1]
)时char*
来自用户输入时,函数可以正常工作,但当我在内部初始化变量并将其传递给Bus error: 10
时相同的功能。我不确定这背后是什么,所以我转向你们。这里是我的代码:从命令行参数输入工作,但从内部char *输入给出总线错误。它不应该是相同的吗?
#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;
}
周围print语句错误之后,它似乎发生在addOneBinaryMain
功能(递归步),在我的标记点。在一个常量字符串
这么多重复... –