C
1#define _CRT_SECURE_NO_WARNINGS 1 2 3#include <stdio.h> 4#include <string.h> 5#include <stdlib.h> 6 7 8typedef struct profile{ 9 char name[20]; 10 char age[10]; 11 char sex[10]; 12}Pro; 13 14int main(){ 15 16 int i; 17 char filename[256]; 18 FILE *fp; 19 20 21 puts("プロフィールを設定します。\n" 22 "以下の項目を入力してください。"); 23 printf("何人分作りますか?>>>"); 24 scanf("%d", &i); 25 26 for (int h = 0; h != i ; h++){ 27 printf("%d人目のプロフィールを作ります。" 28 "以下の項目を入力してください。\n", h + 1 ); 29 30 Pro hito; 31 getchar(); 32 puts("ファイル名を入力してください。"); 33 fgets(filename, sizeof(filename), stdin); 34 filename[strlen(filename) - 1] = '\0'; 35 strcat(filename, ".txt"); 36 fp = fopen(filename, "w"); 37 38 puts("名前を入力してください。"); 39 fgets(hito.name, sizeof(hito.name), stdin); 40 hito.name[strlen(hito.name) - 1] = '\0'; 41 fprintf(fp,"名前は%s\n", hito.name); 42 43 puts("年齢を入力してください。"); 44 fgets(hito.age, sizeof(hito.age), stdin); 45 hito.age[strlen(hito.age) - 1] = '\0'; 46 fprintf(fp,"年齢は%s\n", hito.age); 47 48 puts("性別を入力してください。"); 49 fgets(hito.sex, sizeof(hito.sex), stdin); 50 hito.sex[strlen(hito.sex) - 1] = '\0'; 51 fprintf(fp,"性別は%s\n", hito.sex); 52 53 fclose(fp); 54 } 55 return EXIT_SUCCESS; 56} 57
このプログラムを走らせると、人数を1人に設定すると、.txtが作られ何もできずに終わり、2~にすると入力した人数-1人分のファイルを生成しようとし、名前が入力されたものだけ作られます。
また、ファイルは作られますが、ファイルの中に書き込む所はできません。puts→fscanfの処理が飛ばされます。
そして初心者なので一部、入門書に書かれてるファイルを生成するコードをコピーしています。
ファイル名を入力してください→fgets、strcatなどの処理のところです。
このコードをどうすれば人数分のファイル生成ができ、中身を書き込むことができますか?
説明が下手なのでもしかしたら意図が通じてない所もあるかもしれません。
それと、もともとコード自体を誰かに見せるつもりはなかったので、変数の名前はあまり気にしないでほしいです。すみません。
追記
コードを編集しました。
ここが間違ってる、ここはこうすると良いなどがあれば教えてください。
実行してみた感じでは思った通りに動いてくれました
![guest](/img/icon/icnUserSample.jpg)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/16 12:02 編集
2016/01/16 12:10
2016/01/16 12:21
2016/01/16 12:45
2016/01/17 00:19