• ベストアンサー

記号を入出力する際の指定子

2次元配列に*や&といった記号を入力し出力したいのですが、 この場合の指定子は%cでいいのですか? 配列の宣言をchar、scanf,printfの指定子を%cにしたのですがうまくいきませんでした。何が間違っていますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.5

>スキャンしないようにするにはどうしたらいいですか? scanf(" %c",&data[i][j]); とテキトーに対応してみたり。

n1079
質問者

補足

>scanf(" %c",&data[i][j]); としたら出来ました! でも、どうしてスペースを入れるとうまく出来たのでしょうか?

その他の回答 (5)

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.6

>でも、どうしてスペースを入れるとうまく出来たのでしょうか? scanf() の仕様です。たまにはマニュアルも読みましょう。

n1079
質問者

お礼

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

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.4

>このソースだと出力の時、記号自体は出力されるのですが、 >行や列の数がめちゃくちゃになってしまいました。 単純に空白などの「見えない文字」もスキャンしただけ、と予想。

n1079
質問者

補足

>空白などの「見えない文字」もスキャンしただけ スキャンしないようにするにはどうしたらいいですか? それとも、どうしてもスキャンしてしまうのでしょうか?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

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

n1079
質問者

お礼

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

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

%cは文字コードを文字として表す場合に使います。 char c = 0x41; printf("%c",c); //文字"A"が表示される %sは文字列を表す場合に使います。 char s[] = {"&"}; printf("%s",s); //"&"が表示される & や * を内部でどのように使うかで、記号も決まります。 他の数字列などと組み合わせて(文字列として)使用するなら"%s" 単独の文字をそのまま(コードとして)使用するなら"%c"でしょう。

n1079
質問者

お礼

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

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

>配列の宣言をchar、scanf,printfの指定子を%cにしたのですがうまくいきませんでした。 >何が間違っていますか? ソースを補足に。 そしてどういう風に『うまくいかない』かも補足に。

n1079
質問者

補足

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"); } このソースだと出力の時、記号自体は出力されるのですが、行や列の数がめちゃくちゃになってしまいました。

関連するQ&A