c - C - int 函数返回 ascii 值
问题描述
我写了一个 C 函数,它应该遍历参数向量,一旦找到irow参数,它就会读取下一个参数中的整数,以便稍后在main方法中使用它:
int insertRow(char*argv[], int row_number) {
row_number = 0;
for(int i = 0; argv[i]; i++) {
if ( isdigit(argv[i][0]) && (strcmp(argv[i - 1], "irow") == 0) )
row_number = argv[i][0];
}
printf("%d\n", row_number);
return row_number;
}
但是,当我运行程序时:
./main irow 4
它打印 52(4 的 ascii 表)。如何修复该函数以使其返回整数4?
解决方案
printf("%c\n", row_number);
存储在字符串中的数字存储在它们的 ascii 值中。如果您将值打印为数字 ( %d
),您将显示 ascii 值。如果将值打印为字符 ( %c
),您会将数字解释为匹配的字符,在本例中为数字
推荐阅读
- python-3.x - AttributeError:“模块”对象没有属性“完全匹配”
- cmake - 使用具有特定配置的 target_link_libraries() 会导致链接问题
- oracle - Oracle 18c XE 数据库无法连接 - IP 地址动态更改 - 错误 17002
- sqlite - 将日期字符串 dd/mm/yyyy 格式化为 yyyy-mm-dd
- bitbucket - How to use 2-factor auth with Bitbucket API
- php - What is the name of "::" in PHP?
- rust - 假设两个可变引用不能别名,为什么 Rust 编译器不优化代码?
- regex - 带有正则表达式的 grep-bash 命令返回 0 个结果,正在寻找替代方案
- javascript - Auth0 忽略范围选项
- angular - Calling ngZone.runTask in ngZone.runOutsideAngular still triggering change detection in other components