限定しりとり

C言語について質問です。読み取った文字を関数を使って置き換え、それをファイル出力したいのですが、a[10] = change(s)でエラーが出てしまいます。戻り値を設定すれば良いのですがどのように設定すればいいのか分かりません。分かる方お願いします。
(長くなるのでコードの前半は省略させていただきます。)

char s [5];
char a [10];
// ファイルの読み込み
while(fscanf(fin, "%s", &s) != EOF){
printf("data = %s\n", s);
}
a[10] = change(s);
fprintf(fout, "%s\n", s); //ファイル文字の出力
fprintf(fout,"%s",a); //置き換えた後の出力

// ファイルを閉じる
fclose(fout);
fclose(fin);
return 0;
}

void change(char *x){
int i;
char judge1[] = "O";
char judge2[] = "X";

for ( i = 0; i < 4; i++){
if ("%d",x[i] == 97){
printf("%s%s\n",judge1,judge2);
}
if ("%d",x[i] == 98){
printf("%s%s\n",judge1,judge2);
}
if ("%d",x[i] == 99){
printf("%s%s\n",judge2,judge2);
}
}
return ;
}

A 回答 (3件)

「chang関数を使いOやXに置き換えたい」っていうけど, 「置き換え」るという操作は一般に


何かを何かに
ということになるから, 「何を」OやX に置き換えるのかを決めなきゃいけない.

何?
    • good
    • 0

void な関数に返り値を持たない return文を書くこと自体はおかしくもなんともないよ>#1. void な関数で返り値を持つ return文を書いたり void でない関数で返り値を持たない return文を書くのはダメだけど.



という脇の話はさておき, そもそもその change なる関数でなにをしたいの? それを一切書かないで「どうしたら」っていわれても
あなたの期待するように (それがどのようなものかはまったくわからないけど) 書けばいい
としか返しようがない.
    • good
    • 1
この回答へのお礼

すみません。説明が足りませんでした。ファイルから読み取った文字(省略部分ですが一般的なファイルの読み込みのプログラムです)を、chang関数を使いOやXに置き換えたいのです。printfで置き換えられた事は確かめられました。しかし、そこからファイル出力に持ってく方法が分からないのです。

お礼日時:2021/01/22 01:56

> 長くなるのでコードの前半は省略させていただきます。



ideone辺りに貼り付けてからリンク貼ったらイイんじゃないですか?

ideone.com
https://ideone.com/

じゃないと何がやりたいんだか、どう言うエラー出るんだかサッパリ分からん。

まあ、

> void change(char *x)

とか言ってるクセに

> return ;

があるのもおかしいし、本来なら文字列(char *)返したいんだろうけど、printfしてるし意味不明です。
    • good
    • 0
この回答へのお礼

アドバイスを参考にさせていただきます_(。。)_

お礼日時:2021/01/22 01:20

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