0


コンソール引数を介してunsignedint値をプログラムに渡そうとしています。

私はまだ何を試しましたか:
最初に:argcが2であるかどうかを確認し、そうでない場合はエラー

2番目の値がある場合は、この値を次のように変換しようとしました。

strtoul(argv[1], NULL, 0)

それで、「100」を渡すと、「1」になります。
何が間違っているのでしょうか。

br
サギ



€:私の関数に間違った引数を渡し、間違いを見つけました、みんなありがとう

4

2 に答える 2

4

実際のコードを見ずに見分けるのは少し難しいですが、これをベースラインとして使用できます。

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[]) {
    char *pCh;
    unsigned long unlong = 42;

    // Check enough arguments.

    if (argc != 2) {
        puts ("Not enough arguments");
        return 1;
    }

    // Convert to ulong WITH CHECKING!

    unlong = strtoul (argv[1], &pCh, 10);

    // Ensure argument was okay.

    if ((pCh == argv[1]) || (*pCh != '\0')) {
        puts ("Invalid number");
        return 1;
    }

    // Output converted argument and exit.

    printf ("Argument was %ld\n", unlong);
    return 0;
}

トランスクリプトは次のとおりです。

pax> ./testprog 314159
Argument was 314159

それでも問題が解決しない場合は、問題を示す最短の完全なプログラムを投稿することをお勧めします。そうすれば、何が問題なのかを非常に詳細に説明できます:-)

于 2012-10-31T09:01:04.760 に答える
0

あなたの方法はうまくいくはずです。または、stringstreamを使用できます。

std::string str(argv[1]);

unsigned long ul;

std::stringstream(str)>>ul;
于 2012-10-31T09:03:29.670 に答える