アプリ版:「スタンプのみでお礼する」機能のリリースについて

c言語のコマンドライン引数についてです。
コマンドライン引数で与えられた文字列(先頭の一つのみ)を表示するプログラムを作りました。
上のプログラムは正常に動作した一方で、下のプログラムは警告が出て、走らせることもできませんでした。(以下警告文)
--------------------------------------------------------------------------
format specifies type 'char *' but the argument has type 'char' [-Wformat]
--------------------------------------------------------------------------
argv[]はポインタとして宣言するのでarg[1]は与えられた引数のアドレスが入っている認識でした。
なぜ上のプログラムが正しく、下のプログラムが間違っているのかわかりません。
よろしくお願いします。

「c言語 コマンドライン引数」の質問画像

質問者からの補足コメント

  • 下のプログラムに関して、%cにして実行したところ、最初の文字しか表示されませんでした。
    ((例)24を渡したら2が表示される)
    どうすれば良いでしょうか?

      補足日時:2023/02/09 20:13

A 回答 (4件)

警告に書いてある通りですが・・・


argv は、char のポインタ配列のポインタで
argv[1] は、char のポインタ

*argv[1]は、char なので、
書くなら、
printf("%c\n");
    • good
    • 0

「どうすれば良いでしょうか?」って, そもそも何を期待してるの?



「最初の引数を全部表示したい」ってだけなら上のように書けばいいだけじゃん. それの何が気に入らない?
    • good
    • 0
この回答へのお礼

確かにその通りですね!
盲目的になっていました、、(汗)
ありがとうございます。

お礼日時:2023/02/09 20:21

printf の書式で %s が何を期待しているのかはわかっている? 「arg[1]は与えられた引数のアドレスが入っている」とした

ら (arg[1] は argv[1] のことだとして) *argv[1] は何を意味しているのかな?
    • good
    • 0

失礼、


printf("%c\n",*argv[1]);
    • good
    • 0
この回答へのお礼

ありがとうございます、%sに対応する型がchar*であることを理解していませんでした。
%cにして実行したところ警告文は消えました。
しかし、最初の文字しか表示されないです。
((例)24を渡したら2が表示される)
どうすれば良いでしょうか?

お礼日時:2023/02/09 20:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!