dポイントプレゼントキャンペーン実施中!

2次元配列に*や&といった記号を入力し出力したいのですが、
この場合の指定子は%cでいいのですか?

配列の宣言をchar、scanf,printfの指定子を%cにしたのですがうまくいきませんでした。何が間違っていますか?

A 回答 (6件)

>スキャンしないようにするにはどうしたらいいですか?



scanf(" %c",&data[i][j]);
とテキトーに対応してみたり。

この回答への補足

>scanf(" %c",&data[i][j]);

としたら出来ました!
でも、どうしてスペースを入れるとうまく出来たのでしょうか?

補足日時:2009/01/30 18:59
    • good
    • 0

>でも、どうしてスペースを入れるとうまく出来たのでしょうか?



scanf() の仕様です。たまにはマニュアルも読みましょう。
    • good
    • 0
この回答へのお礼

自分でもいろいろと調べてみます!
ありがとうございました。

お礼日時:2009/01/30 23:05

>このソースだと出力の時、記号自体は出力されるのですが、


>行や列の数がめちゃくちゃになってしまいました。

単純に空白などの「見えない文字」もスキャンしただけ、と予想。

この回答への補足

>空白などの「見えない文字」もスキャンしただけ

スキャンしないようにするにはどうしたらいいですか?
それとも、どうしてもスキャンしてしまうのでしょうか?

補足日時:2009/01/30 17:47
    • good
    • 0

「行や列の数がめちゃくちゃになる」といわれてもねぇ. もっと具体的に, 「こういう入力に対してこんな出力が得られた」と書いてもらえ

ないかなぁ.
    • good
    • 0
この回答へのお礼

すみませんでした。次からはもっと詳しく書くようにします。
ありがとうございました。

お礼日時:2009/01/30 23:07

%cは文字コードを文字として表す場合に使います。


char c = 0x41;
printf("%c",c); //文字"A"が表示される
%sは文字列を表す場合に使います。
char s[] = {"&"};
printf("%s",s); //"&"が表示される

& や * を内部でどのように使うかで、記号も決まります。
他の数字列などと組み合わせて(文字列として)使用するなら"%s"
単独の文字をそのまま(コードとして)使用するなら"%c"でしょう。
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2009/01/30 23:06

>配列の宣言をchar、scanf,printfの指定子を%cにしたのですがうまくいきませんでした。


>何が間違っていますか?

ソースを補足に。
そしてどういう風に『うまくいかない』かも補足に。

この回答への補足

char data[4][4];
for(i=0;i<4;i++){
  for(j=0;j<4;j++){
    scanf("%c",&data[i][j]);
  }
}
printf("\n");
for(i=0;i<4;i++){
  for(j=0;j<4;j++){
printf("%c",data[i][j]);
  }
  printf("\n");
}

このソースだと出力の時、記号自体は出力されるのですが、行や列の数がめちゃくちゃになってしまいました。

補足日時:2009/01/30 17:24
    • good
    • 0

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