-4

この行を生成するために、atoi を使用して pairCounts を作成する方法は?

# ./paircounts 17 0

# ./paircounts 255 7

# ./paircounts 10 20 too many arguments!

int pairCounts(unsigned int n);

int main(int argc, char *argv[]) {
    const char testStr[] = "# pairs in base 2 of %u = %d, should be %d\n";
    printf (testStr, 0, pairCount (0), 0);
    printf (testStr, 11, pairCount (11), 1);
    printf (testStr, 2863377066u, pairCount (2863377066u), 2);
    printf (testStr, 268435456, pairCount (268435456), 0);
    printf (testStr, 4294705151u, pairCount (4294705151u), 29);
    return 0;
}

int pairCounts(unsigned int n) {
}
4

2 に答える 2

1

なぜあなたはatoi何かに使うのですか?文字列を整数値として解析したい場合は、 を使用する必要がありますstrol。そしてatoi、出力を生成するのに少しでも適していません。行を生成するには:

# ./paircounts 17 0

putsの代わりに(またはfputs、またはprintf、またはfprintf、またはおそらくfwrite、または多分write、...) を使用しますatoi。例: puts( "# ./paircounts 17 0" ). 他の行についても同様です。

于 2013-02-04T04:46:58.137 に答える
0

このページを読んでください。私はそのcplusplus.comを知っていますが、それはatoiのcバージョンでもまだ有効です。あなたが何を達成しようとしているのか完全にはわかりませんが、2つのアイデアがあります。

  1. 正しい数の引数が入っていることを確認しようとしています。この場合、atoiは必要ありません。必要なのは、argcで正しい量を確認することだけです。

    if (argc != 3) throw some error;
    

    argcにはプログラム名が含まれているため、実際の入力引数よりも常に1つ多いことに注意してください。

  2. あなたはatoiを使って何か他のことをしたいのですが、その場合は非常に使いやすいのでatoiガイドを読んでください。

より明確にしたい場合は、質問を改善する必要があります。幸運を。

于 2013-02-04T04:41:25.160 に答える