情報
大学生・専門学校生・社会人
解決済み

C言語なのですが、文字型の配列の中身を行ごとに改行して出力するコードを書きたいのですが、これだとうまく出力されません。色々原因を探ってるのですがよくわからなかったです。初心者なので汚いソースコードで申し訳ないです。
どなたかわかる方教えてください🙇‍♂️

TK Td DO て enshu67< て enshue8c ※ TTY 1 紅nclude <stdio.h> と ョ void sub(char a[][3], int r。 int c)ぅ 4 //文字型の配列の中身をを行ごとに出力する関数 5 void main() 日 char array[21[3] = 人("abc"],("efg"]}ぅ //出力する文字型配列 7 int row = 1 //@番目から数えた時の行数 8 SO 時1 //@番目から数えた時の列数 19 sub(array,row, co1) 中 1 】 13 。 void sub(char a[][3], int r, int ot 14 | while(r >= の){ 15 て= 16 while(c >= 9 4 usr9で凍1EElyゴ3 18 CB に } 29 Li 21 PetisGkhb有 //行ごとに改行 の 3 23 }

回答

✨ ベストアンサー ✨

むぅ、サブルーチンに r,c を渡して何がやりたいのかいまいち読み切れないですが、とりあえず 配列内の文字列ごとに改行するコードはこんな感じです。

#include <stdio.h>

int main()
{
char word_array[2][3]={"One","Two"};
int row;
int offset;

for(row=0; row<2; row++){
for(offset=0; offset<sizeof(word_array[row]); offset++){
printf("%c", word_array[row][offset]);
}
printf("\n");
}

return 0;
}

とも

回答ありがとうございます!!
rとcをサブルーチンに渡すならおそらくfor文で書いた方がいいと思ったのですがこちらの事情であえてwhile文で書いてます。混乱させてしまってすみません🙇‍♂️そして配列の文字も一つ足りてなかったですね。。タイプミスです。

ひつま節さんのコードを参考にさせていただいて、%sだったところを%cに直すと正しく実行結果が出ました!本当にありがとうございます😊

ひつま節₁₂₃₄

または、もっとシンプルに char 格納サイズを1つ増やしてから

#include <stdio.h>

int main()
{
char word_array[2][4]={"One","Two"};
int row;

for(row=0; row<2; row++) printf("%s\n", word_array[row]);

return 0;
}

でも行けるかと。

ひつま節₁₂₃₄

おっ、問題は%cでしたか。
最初のコードはsizeofしてるので、array[2][3]でも動作します。

とも

ありがとうございます!この問題は行ごとに改行して出力するサブルーチンを作る、引数も全て指定されてた問題だったのでサブルーチンを使って書きました😄

この回答にコメントする
疑問は解決しましたか?

この質問を見ている人は
こちらの質問も見ています😉