我想知道如何在C语言中进行比较,我在代码中添加了argv[2]
和int
个数字:
EX: prog.exe file.txt 74
========================
int n;
scanf ("%d", &n);
if (n > argv[2])
{
[...]
}
如何比较这些不同类型的数据?
答案 0 :(得分:6)
传递给您应用的任何命令行参数都存储在argv
中作为字符指针(也称为“C字符串”)。在比较之前,您需要通过任意数十种方法(最简单的是atoi
)将字符串转换为整数。
如果您正在编写严肃的生产代码,请避免使用atoi
,因为很难区分失败和评估数字0
的字符串。您应该使用strtol
进行正确的错误检查。
答案 1 :(得分:3)
命令行上的参数是一个字符串。他们需要转换为各自的类型。就个人而言,我首先使用整数变量和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;
}
答案 2 :(得分:0)
如果您想将包含atoi()
的argv [2]转换为int
,只需使用stdlib.h
功能即可
对于atoi()
。此函数只是转换字符串的第一个数字,直到遇到字符串的非数字成员。