1

我想知道如何用 C 语言比较我输入argv[2]的数字和int代码中的数字:

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

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

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

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

4

3 回答 3

6

传递给您的应用程序的任何命令行参数都存储argv为字符指针(也称为“C 字符串”)。在比较之前,您需要通过几十种方法中的任何一种(最简单的是atoi)将字符串转换为整数。

如果您正在编写严肃的生产代码,请避免使用atoi,因为很难区分失败和评估为 number 的字符串0。您应该改为使用strtol适当的错误检查。

于 2012-06-23T13:39:28.723 回答
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;
}
于 2012-06-23T13:56:39.247 回答
0

atoi()如果要将 argv[2]转换 为int包含. 此函数只是转换字符串的第一个数字,直到遇到字符串的非数字成员。stdlib.hatoi()

于 2012-06-23T13:48:07.033 回答