c - 如何从参数行获取数字?

标签 c

我有这个代码

#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/

相关文章:

c - 如何在 c 中使用 % 运算符作为浮点值

c - 在 C 中使用 API 线程处理文件

c - 如何在 C 中访问 getline() 中的字符

c - 在 C 中,我想知道如何根据字符串中第一个字符的值来处理字符串?

c - 稀疏矩阵线性和非线性方程求解器

c - 在 C 中使用信号量进行多线程

c++ - 从不同 VS2010 项目中的 C++ 代码调用 C 函数时出现链接器错误

c - printf 不打印

c - 用 Bit Packing 优化 C 中的矩阵乘法

c - 在另一个字符集中对奇怪的字符进行 Urlen 编码