首页 > 解决方案 > 代码打印数组值的地址而不是值?

问题描述

为什么这段代码打印的是 int 数组的地址而不是值?说str是“2002 年 8 月 18 日”,它会打印:

total digits: 6 all digits list: 49 56 50 48 48 50

当我想让它说:

total digits: 6 all digits list: 1 8 2 0 0 2

这是代码的相关部分。

功能:

int extractDigits (char str[MAX], int digitsInInputString[MAX]) { //returns total digits in str, and appends digitsInInput to list of digits
        int i;
        int totalDigits = 0;

        for (i=0; i < strlen(str) - 1; i++) {
                if (isdigit(str[i])) {
                        digitsInInputString[totalDigits] = str[i];
                        totalDigits++;
                }
        }

        return totalDigits;
}

主程序:

        digitsInString = extractDigits(myStr, strNums);
        printf("total digits: %d all digits list:", digitsInString);
        for (i=0; i<digitsInString; i++) {
                printf(" %d", strNums[i]);
        }
        printf("\n");

标签: arrayscprintf

解决方案


将此行重写digitsInInputString[totalDigits] = str[I];为:

digitsInInputString[totalDigits] = str[I] - '0';

这会将 ASCII 字符转换为十进制。


推荐阅读