arrays - 代码打印数组值的地址而不是值?
问题描述
为什么这段代码打印的是 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");
解决方案
将此行重写digitsInInputString[totalDigits] = str[I];
为:
digitsInInputString[totalDigits] = str[I] - '0';
这会将 ASCII 字符转换为十进制。
推荐阅读
- python - 找到最接近给定时间戳的时间戳(从字典数组中)
- notepad++ - Notepad++ 在屏幕外打开
- reactjs - 在没有 express 的情况下在 reactjs 中实现单点登录(saml2)
- embedded - 多个独立编译的二进制/十六进制文件之间的代码共享
- javascript - 检查任何类型的 typeof 的最短方法是什么?
- java - Apache Camel 排除选项不能与 GenericFileFilter 一起使用
- javascript - vuejs在选择后获取日期选择器的值
- php - 如何将随机数量的表单元素中的数据保存到 SQL 表中?
- java - 如何根据线程数调度并发Runnables,而线程在完成任务后必须等待延迟
- html - 在 iframe 中使用背景图像和响应式设计强制桌面视图