1. ホーム
  2. c

[解決済み】argv[]をint型として取得するには?

2022-02-08 06:33:43

質問

このようなコードがあります。

int main (int argc, char *argv[]) 
{
   printf("%d\t",(int)argv[1]);
   printf("%s\t",(int)argv[1]);
}

で、シェルではこうしています。

./test 7

しかし、最初のprintfの結果は7ではありません、どうすればargv[]をintとして得ることができますか?

解決方法は?

argv[1] は文字列へのポインタです。

を使用すると、それが指す文字列を表示することができます。 printf("%s\n", argv[1]);

文字列から整数を得るには、まず変換する必要があります。使用方法 strtol に変換して、文字列を int .

#include <stdio.h>
#include <errno.h>   // for errno
#include <limits.h>  // for INT_MAX, INT_MIN
#include <stdlib.h>  // for strtol


int main(int argc, char *argv[])
{
    char *p;
    int num;

    errno = 0;
    long conv = strtol(argv[1], &p, 10);

    // Check for errors: e.g., the string does not represent an integer
    // or the integer is larger than int
    if (errno != 0 || *p != '\0' || conv > INT_MAX || conv < INT_MIN) {
        // Put here the handling of the error, like exiting the program with
        // an error message
    } else {
        // No error
        num = conv;
        printf("%d\n", num);
    }
}