【发布时间】:2015-09-10 00:23:20
【问题描述】:
这里基本上是代码:
void calculate(int, int, char *, char *, char **); //the prototype of the function
int main(){
int option;
int operation_int=0;
char operation[14];
char value1[20];
char value2[20];
char *result;
result = (char *)malloc(20*sizeof(char));
calculate(2, operation_int, value1, value2, &result);
return 0;
}
void calculate(int option, int operation_integ, char *var1, char *var2, char **res){
int i=0;
int value1 = 0;
int value2 = 0;
int calc_result = 0;
switch(operation_integ){
case 1:
switch(option){
case 1:
break;
case 2:
while( ( (var1[i] != '\0') || (var2[i] != '\0') ) ){
if( (var1[i] != '\0') ){ calc_result= calc_result + ( var1[i] - '0' ) * pow(10,i);}
if( (var2[i] != '\0') ){ calc_result= calc_result+ ( var2[i] - '0' ) * pow(10,i);}
i++;
}
i=0;
while(calc_result!= 0){ //HERE IS SOMETHING WRONG
*(*(res+i)) = (char)calc_result % 10;
calc_result = calc_result/10;
i++;
}
}
}
}
所以当然,结果是“Segmentation Fault”。 我认为我没有正确使用指向指针符号的指针,或者从函数内部从指向指针的指针修改指针可能不是“合法的”。所以我很迷茫。
。有人可以在这里给我一些帮助吗?
【问题讨论】:
-
请修正你的变量名,你用英语声明它们并用西班牙语使用它们
-
您的示例没有显示 resultado 的声明或初始化位置/方式,但看起来您已经为其赋予了全局范围(有助于更好地理解示例以查看它)。尽管如此,您似乎都在直接对 resultado 进行操作,同时使用指向您已通过调用的指针。这不是一件好事,因为它使代码难以遵循,并且任何缺陷都难以发现。
-
不要在 C 中转换
malloc。
标签: c pointers segmentation-fault