我有这个代码
#include<stdio.h>
int main(int argc, char * argv[]){
printf("%i\n", (int) *argv[1])
}
当我使用命令 ./a.out 6 执行编译代码时,它会打印数字 54,但我正好需要 6。
最佳答案
命令行参数以 C 字符串形式传递,而不是以数字形式传递。您无法将 C 字符串转换为其相应的数字,因为它是指向字符序列的指针,而不是数字本身。
您的代码尝试转换表示 6
的字符串中的第一个字符,即"6"
, 至int
。转换成功,因为 char
是整型数字类型,但您得到的是 54 而不是 6,因为这是 '6'
的字符代码在您的系统上。
您可以使用 atoi
正确进行转换:
int n = atoi(argv[1]);
printf("%i\n", n);
您需要包含<stdlib.h>
以便编译。
关于c - 如何从参数行获取数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36247450/