比较“argv”和“int”变量(C)

时间:2012-06-23 13:37:29

标签: c argv

我想知道如何在C语言中进行比较,我在代码中添加了argv[2]int个数字:

EX: prog.exe file.txt 74
========================

int n; 
scanf ("%d", &n);

if (n > argv[2]) 
{ 
   [...] 
}

如何比较这些不同类型的数据?

3 个答案:

答案 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()。此函数只是转换字符串的第一个数字,直到遇到字符串的非数字成员。