何らかの理由で、私のCプログラムがargvの要素をintに変換することを拒否しています。理由を理解できません。charがintに変換されていません
int main(int argc, char *argv[])
{
fprintf(stdout, "%s\n", argv[1]);
//Make conversions to int
int bufferquesize = (int)argv[1] - '0';
fprintf(stdout, "%d\n", bufferquesize);
}
そして./test 50を実行している場合、これが出力されます。
-1076276207
私は*と&の両方を投げて、(int)を削除しようとしています(int)とargv [1]の間で、前者は5を返しますが50は返しませんでしたが、後者は上記のような出力を与えました。 - '0'操作を削除してもあまり役に立ちません。私はまた、char = firstをargv [1]に変換しようとしました。代わりに最初に変換を使用しました。この奇妙なことに、入力に関係なく17を与えました。
私は非常に混乱しています。何が起こっている?
'argv [1] [0]'(型は 'char')<最初の引数の最初の文字(exec名の後ろ)を意味すると思います。もちろん、まだチェックはありませんし、より良い方法があります。'' argv [1] 'が' 'char * ''とタイプされているので)、エラーをキャストしようとしないでください:-) –