質問: '\0'; fprintf(fp,"性別は%s\n", hito.sex); fclose(fp); } return EXIT_SUCCESS; } ``` このプログラムを走らせると、人数を1人に設定すると、.txtが作られ何もできずに終わり、2~にすると入力した人数-1人分のファイルを生成しようとし、名前が入力されたものだけ作られます。 また、ファイルは作られますが、ファイルの中に書き込む所はできません。puts→fscanfの処理が飛ばされます。 そして初心者なので一部、入門書に書かれてるファイルを生成するコードをコピーしています。 ファイル名を入力してください→fgets、strcatなどの処理のところです。 このコードをどうすれば人数分のファイル生成ができ、中身を書き込むことができますか? 説明が下手なのでもしかしたら意図が通じてない所もあるかもしれません。 それと、もともとコード自体を誰かに見せるつもりはなかったので、変数の名前はあまり気にしないでほしいです。すみません。 追記 コードを編集しました。 ここが間違ってる、ここはこうすると良いなどがあれば教えてください。 実行してみた感じでは思った通りに動いてくれました
回答: for 内の fp = fopen(filename, "w"); で出力ファイルを人数分オープンしていますが、このfpのクローズは for の外(48行目)でしていますよね。 クローズもfor内で毎回、人数分する必要があります。 また、"名前を入力してください" の箇所も fscanf で fp を指定しているのも変と思います。