↓のプログラムは、名前、学生番号、年齢、メールアドレスを入力して
同じ場所にあるmyinfo.txtに情報を保存するプログラムです。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAME "myinfo.txt"
int main(void)
{
char name[100];
char number[100];
char age[100];
char address[100];
FILE *fp;
fp=fopen(FILENAME, "w");
printf("Your name, please:\n");
fgets(name,sizeof(name),stdin);
printf("Your student number, please:\n");
fgets(number,sizeof(number),stdin);
printf("Your age, please:\n");
fgets(age,sizeof(age),stdin);
printf("Your e-mail address, please:\n");
fgets(address,sizeof(address),stdin);
fprintf(fp,"%s",name);
fprintf(fp,"%s",number);
fprintf(fp,"%s",age);
fprintf(fp,"%s",address);
fclose(fp);
return(0);
}
このプログラムに変更を加えて、myinfo.txtにある情報を読み込み出力するプログラムを作るのに困ってます。
fopenの"w"を"r"に変える事、fscanf、fgetsを用いる事がヒントに書かれてました。
ファイルの読み取り
Re:ファイルの読み取り
このままじゃ、課題の丸投げになっちゃうので、規約等を参考に不明点を掘り下げてください。
#それはそうと、上のプログラムで保存したデータは、名前、電話番号、年齢、住所の区別が
#つかなくなる気がするんですが。。
#それはそうと、上のプログラムで保存したデータは、名前、電話番号、年齢、住所の区別が
#つかなくなる気がするんですが。。
Re:ファイルの読み取り
> #それはそうと、上のプログラムで保存したデータは、名前、電話番号、年齢、住所の区別が
> #つかなくなる気がするんですが。。
上の発言取り消します。
>分からない部分はまさにそこで、fscanfを使った後にfgetsを使えと書いてあるのですが、
「fscanf 例 C言語」や「「fgets 例 C言語」」辺りをキーワードにググッてみては?
#自分で例を書いちゃうと、まんま答えになっちゃいそうなので。
> #つかなくなる気がするんですが。。
上の発言取り消します。
>分からない部分はまさにそこで、fscanfを使った後にfgetsを使えと書いてあるのですが、
「fscanf 例 C言語」や「「fgets 例 C言語」」辺りをキーワードにググッてみては?
#自分で例を書いちゃうと、まんま答えになっちゃいそうなので。
Re:ファイルの読み取り
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAME "myinfo.txt"
int main(void)
{
char name[100];
char number[100];
char age[100];
char address[100];
FILE *fp;
fp=fopen(FILENAME, "r");
fscanf(fp,"%d",&name);
fscanf(fp,"%d",&number);
fscanf(fp,"%d",&age);
fgetc(fp);
fscanf(fp,"%d",&address);
fprintf(fp,"My name:%s\n",name);
fprintf(fp,"My student number:%s\n",number);
fprintf(fp,"My age:%s\n",age);
fprintf(fp,"My e-mail address:%s\n",address);
fclose(fp);
return(0);
}
途中経過です。コンパイルしても何も出てきません。
あと、fgetsを入れるようにしたいのですが、どこに入れるべきでしょうか?
#include <stdlib.h>
#include <string.h>
#define FILENAME "myinfo.txt"
int main(void)
{
char name[100];
char number[100];
char age[100];
char address[100];
FILE *fp;
fp=fopen(FILENAME, "r");
fscanf(fp,"%d",&name);
fscanf(fp,"%d",&number);
fscanf(fp,"%d",&age);
fgetc(fp);
fscanf(fp,"%d",&address);
fprintf(fp,"My name:%s\n",name);
fprintf(fp,"My student number:%s\n",number);
fprintf(fp,"My age:%s\n",age);
fprintf(fp,"My e-mail address:%s\n",address);
fclose(fp);
return(0);
}
途中経過です。コンパイルしても何も出てきません。
あと、fgetsを入れるようにしたいのですが、どこに入れるべきでしょうか?
Re:ファイルの読み取り
> fp=fopen(FILENAME, "r");
> fprintf(fp,"My name:%s\n",name);
> fprintf(fp,"My student number:%s\n",number);
> fprintf(fp,"My age:%s\n",age);
> fprintf(fp,"My e-mail address:%s\n",address);
読み込み用にオープンしたファイルに書き込もうとしているので、
考え方が破綻しています。
また、途中にある
> fgetc(fp);
この文の意味が不明です。
> fprintf(fp,"My name:%s\n",name);
> fprintf(fp,"My student number:%s\n",number);
> fprintf(fp,"My age:%s\n",age);
> fprintf(fp,"My e-mail address:%s\n",address);
読み込み用にオープンしたファイルに書き込もうとしているので、
考え方が破綻しています。
また、途中にある
> fgetc(fp);
この文の意味が不明です。

Re:ファイルの読み取り
int main(void)
{
char name[100];
char number[100];
int age;
char address[100];
FILE *fp;
fp=fopen(FILENAME, "r");
fgets(name,sizeof(name),fp);
fgets(number,sizeof(number),fp);
fscanf(fp,"%d",&age);
fgetc(fp);
fgets(address,sizeof(address),fp);
printf("My name: %s",name);
printf("My student number: %s",number);
printf("My age: %d\n",age);
printf("My e-mail address: %s",address);
fclose(fp);
return(0);
}
自力で解決しました。
ageの部分にintを用いつつ、fgetsとfscanfを両方使いfscanfで読み込めなかった改行部分を
fgetcで省く、つもりのプログラムでした。
説明と理解力でした、すみません。
{
char name[100];
char number[100];
int age;
char address[100];
FILE *fp;
fp=fopen(FILENAME, "r");
fgets(name,sizeof(name),fp);
fgets(number,sizeof(number),fp);
fscanf(fp,"%d",&age);
fgetc(fp);
fgets(address,sizeof(address),fp);
printf("My name: %s",name);
printf("My student number: %s",number);
printf("My age: %d\n",age);
printf("My e-mail address: %s",address);
fclose(fp);
return(0);
}
自力で解決しました。
ageの部分にintを用いつつ、fgetsとfscanfを両方使いfscanfで読み込めなかった改行部分を
fgetcで省く、つもりのプログラムでした。
説明と理解力でした、すみません。