void main(){
int digits[21]; //this was initialized so that every element is 0 by looping over every element and setting it to 0
char input[20];
scanf("%s", input);
parseDigits(digits, input);
}
void parseDigits(int* digits, char *string){
char *end = string + strlen(string) -1;
int i;
for (i = 0; i < strlen(string) - 1; i++, end--){
int *digit = digits + i;
printf("%d", *digit);
*digit += charToDigit(*end);
if (*digit >= 10){ //carry one
*digit -= 10;
digit++;
*digit += 1;
}
}
}
打印一个过大的整数,而不是0,这是预期的输出。我不明白,
digits + i
应该仍然在数组的范围内。
答案 0 :(得分:1)
可能还有其他问题,但从初看起你还没有正确初始化你的数组,这应该是这样的:
int digits[21] = { 0 };