argv[]をintとして取得するにはどうすればいいですか? 質問する

argv[]をintとして取得するにはどうすればいいですか? 質問する

次のようなコードがあります:

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

シェルでは次のようにします:

./test 7

しかし、最初のprintfの結果は7ではありません。argv[]をintとして取得するにはどうすればいいでしょうか?よろしくお願いします

ベストアンサー1

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);
    }
}

おすすめ記事