2012-05-08 12 views
1

これは私がたくさんのものを印刷してテストしたものですが、何らかの理由で私が決めることができないケースが1つあります。argvで引数にアクセスする

後で使用する関数に引数として整数を渡す必要がありますが、正しく保存したかどうかを確認するために再度出力するときは、乱数を取得します。これはコードの関連部分です。

私は1つの引数を関数に渡しました。これはintでした。私もint型としてargv [1]をキャストしようとしましたが、どちらもうまくいきませんでした。これがprintfの問題であるかどうかはわかりません。それだけであれば、私は気にしません。私はちょうどintとして適切に値を格納していることを知る必要がありました。私はargvが文字列へのポインタの配列であることを知っていますが、文字列をintにキャストすることができると思いました。

答えて

5

char **argvは、文字の配列(または文字列)とみなされます。 argvの値を最初に整数に変換する必要があります。

あなたはatoiを介してこれを行うことができます。

int num_bytes = atoi(argv[1]); 
+0

atoi()は標準機能ではありません。私の答えをご覧ください。 –

+0

@ H2CO3:両方のメソッドに「」をインポートする必要があります。 'atoi()'は、より簡単な(そして観察しやすい)方法です。 – Makoto

+0

私はあなたの答えが2つのアップフォースを得て、なぜ私が*標準*と一緒に複数のソリューションを提供するのか疑問に思っています、そして、私はまた、これらの特定の結果を作り出す理由を説明します... –

0

argvが、文字列の配列へのポインタです。渡した整数引数を取得するにはatoi(argv [1])を呼び出す必要があります。