2017-09-13 3 views
0

私はCプログラミング(Pythonを以前に行ったことがありますがこれはかなり難しい移行です)には本当に新しいです。私はコマンドラインの引数をチェックするタスクを与えられており、アルファベットまたは数字の小文字ではないものは、指定されたステートメントでプリントアウトする必要があります。コマンドライン引数が小文字/アルファベットでソートされているかどうかを確認するには?

私はforループを試してみてislowerargv[i]をチェックしようとしましたが、私のプログラムがクラッシュします。コンパイラは、この警告を与える:「islowerは」は、引数1を渡し

は、キャスト

なしポインタから整数を作る誰かが実際にコードを入力しなくても一般的なアイデアをお願いできますか?私が実際にこれをやりたいと思うように、コードを入力しないでください(また、盗作に困るかもしれません)。

+0

あなたの現在の試みはどのように見えますか? 'argv [i]'は何かを意味するかもしれないので、コードを投稿するべきです。 – tangrs

+3

あなたが書いたコードは書いてありますか?あなたがあなたの質問の一部としてそれを投稿した場合(それをフォーマットするのを忘れないでください)、私たちは多分、あなたが何が悪いのか、そしてそれらを修正する方法を教えてくれるでしょう。 *すべての*エラーメッセージ*をそのまま残しておき、理解していない部分を指摘することを忘れないでください。 – WhozCraig

+0

@WhozCraig:逆に、失敗モードは質問から完全に明らかです。その場合、私は1つのために私はちょうどコードダンプではない奇妙な質問に気にしません。 – Dolda2000

答えて

0

islower()チェックargv[i]が文字列(char *)、ではない文字であることを意味し、char **可変でargvに対し単一文字の場合、。したがって、特定の引数が小文字であるかどうかをチェックするには、それぞれの文字をチェックするためにその中の文字を繰り返し処理する必要があります。

あなたが言及している警告メッセージの意味でもあります。 islower()への引数はint(1文字)であり、ポインタ(つまり、つまりchar *)を渡すと、コンパイラはそのポインタを暗黙的にintにキャストします。これはあまり意図されていない動作です。

+0

ありがとう、本当に助かりました。 getcharを使って各文字を繰り返し処理することは可能でしょうか?入力がscanfを使用しているときに使用できることはわかっていますが、コマンドライン入力に使用できますか? –

+0

@Khalid:いいえ、 'getchar'はI/O用ですが、実際には必要ありません。文字列は 'char'配列なので、引数自体と同じように繰り返し処理できます。 'argv [0] [0]'は 'argv'の最初の文字列の最初の文字です。 – Dolda2000

+0

このような迅速な回答をいただきありがとうございます。 –

関連する問題