[修正版]二次元配列にデータを書き込む関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Chamy

[修正版]二次元配列にデータを書き込む関数について

#1

投稿記事 by Chamy » 3ヶ月前

[以前投稿した質問のプログラムが貼り付けた際に一部抜けてしまっていたため、もう一度正しいプログラムを載せて投稿させて頂きます]
初めまして。
C言語を勉強している大学生です。今課題で二次元配列に@で0か1を表示させ、eを入力すると繰り返し処理が終了するプログラムを関数を使って作っています。以下のプログラムはそれぞれ数字0,数字1のデータを書き込む関数を作るところまで完成させている状態です。そこで質問です。ここから、数字0,数字1のデータを書き込む関数それぞれの中に、二次元配列にデータを書き込む関数を作りたいのですが、ここから手が動きません。考え方は、数字を描くデータを書き込む二次元配列、データを書き込む向きが縦か横かを設定する変数、データを書き込む範囲を決める変数3つを関数に渡したいです。三つ目の範囲を決める変数というのは例えば、(横、0、1、3)となれば二次元配列のj=0,でiの1から3までに@を置くということです。
関数の中で関数を呼び出したいのですがまだあまり理解ができていないので、どなたかご教授いただけると幸いです。
#include <stdio.h>
void Zero(char num[5][7]);
void One (char num[5][7]);
int main(void)
{
char num[5][7], str[2];
int i, j;
while(1) {

for (j = 0; j < 7; j++) {
for (i = 0; i < 5; i++)
num[j] = ' ';
}
printf("0 か 1 か e を入力(e で終了):");
scanf("%s", str);
if (str[0] == 'e' && str[1] == 0) break;
if (str[0] >= '0' && str[0] <= '1' && str[1] == 0) {

if (str[0] == '0') {
Zero(num);
}
else if (str[0] == '1') {
One(num);
}

for (j = 0; j < 7; j++) {
for (i = 0; i < 5; i++)
printf("%c", num[j]);
printf("\n");
}
}
else
printf("\n>>> 該当するものがありません <<<\n\n");
}
return 0;
}

void Zero(char num[5][7])
{
int i, j;
for (i = 1; i < 4; i++) {
num[0] = '@';
num[6] = '@';
}
for (j = 1; j < 6; j++) {
num[0][j] = '@';
num[4][j] = '@';
}
}

void One(char num[5][7])
{
int i, j;
for (j = 0; j < 7; j++) {
num[2][j] = '@';
}
num[1][0] = '@'; num[1][6] = '@'; num[3][6] = '@';
}

“C言語何でも質問掲示板” へ戻る