我想知道我怎么能在C语言相比,这个数字我穿上argv[2]
和我的代码int
号:比较“的argv”和“INT”变量(C)
EX: prog.exe file.txt 74
========================
int n;
scanf ("%d", &n);
if (n > argv[2])
{
[...]
}
如何我可以比较这些不同类型的数据吗?
我想知道我怎么能在C语言相比,这个数字我穿上argv[2]
和我的代码int
号:比较“的argv”和“INT”变量(C)
EX: prog.exe file.txt 74
========================
int n;
scanf ("%d", &n);
if (n > argv[2])
{
[...]
}
如何我可以比较这些不同类型的数据吗?
只需使用atoi()
功能。这个函数简单地转换字符串的第一个数字,直到遇到字符串的非数字成员。
命令行上的参数为字符串。他们需要转换成他们各自的类型。就我个人而言,我会先用一个整数变量和atoi解压你的argv [2];输入一个用户输入的值成n
,然后比较,如下所示:
#include <stdio.h>
#include <string.h>
int n;
int argv_2;
int main(int argc, char *argv[])
{
int rc = 0;
/* Check for three arguments, program name and two passed. */
if(3 == argc)
{
argv_2 = strtol(argv[2], NULL, NULL, 10);
printf("Please enter a number for the vaue of the variable n\t: ");
scanf("%d", &n);
printf("\n\n");
if (n > argv_2)
{
printf("The value of n: %i is greater than argv[2]: %i\n",
n, argv_2);
}
else
{
printf("The value of n: %i is not greater than argv[2]: %i\n",
n, argv_2);
}
}
else
{
printf("Usage: ./test arg1 arg2 \n\n");
}
return rc;
}
argv_2 = atoi(argv [2],10);什么“10”留下来?谢谢 – Lc0rE
我应该使用strtol。我没有编程C语言这么久,我没有意识到atoi已被弃用。 http://www.codecogs.com/reference/computing/c/stdlib.h/atoi.php我编辑的答案反映。 – octopusgrabbus
'的sscanf(argv的[2], “%d”,&米)'也是另一种选择。 –
以下是一些[documentation](http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/)的链接。是的,我知道这是一个C++参考,但它是相同的功能。 – jpm
@jpm谢谢。更新了一个链接。 –