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
应该仍在数组的范围内。
最佳答案
可能还有其他问题,但乍一看您没有正确初始化数组,应该这样做:
int 数字[21] = { 0 };
关于c - Int 指针在 C 中具有奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34018557/