###前提・実現したいこと
EclipseでC/C++言語を学んでいます。大学の課題でこんなものが出ました。
typedef struct student{ char name[80]; char id[8]; float gpa; }Student; を定義し、Student students[2]の配列を用意して、 stdin と fscanf を用いて2個のデータをキーボード入力し、 data/data10 に保存し、再び読み込んで、中身を確認せよ。
###試したこと
C++
1#include<stdio.h> 2#include<iostream> 3using namespace std; 4 5typedef struct student{ 6 char name[80]; 7 char id[8]; 8 float gpa; 9}Student; 10 11int main(){ 12 Student students[2]; 13 FILE *fp1=fopen("data/data10","wb"); 14 for(int i=0;i<2;i++){ 15 fscanf(stdin,"名前: %c",&students[i].name); 16 fscanf(stdin,"ID: %c",&students[i].id); 17 fscanf(stdin,"GPA: %f",&students[i].gpa); 18 } 19 fwrite(&students,sizeof(float),2,fp1); 20 fclose(fp1); 21 22 Student copyOfStudents[2]; 23 FILE *fp2=fopen("data/data10","rb"); 24 fread(copyOfStudents,sizeof(float),2,fp2); 25 fclose(fp2); 26 27 for(int i=0;i<2;i++){ 28 fprintf(stdout,"名前: %c\n",&students[i].name); 29 fprintf(stdout,"ID: %c\n",&students[i].id); 30 fprintf(stdout,"GPA: %f\n",&students[i].gpa); 31 } 32}
###問題点・改善したい点
実行すると、本来なら「名前: 」と出てくるはずなのに、
何も出てきません。(エラーもなく実行できていて、入力も可能でした)
/*例えば、 「あ」「あいう」「a」 などの文字列を一つ入力すると、*/ 名前: � ID: 0 GPA: 0.000000 名前: < ID: � GPA: 0.000000 /*のように、空のデータがそのまま 出力されてしまいます。*/
早急に回答してくださると助かります!
###補足情報(言語/FW/ツール等のバージョンなど)
使用ツール:Eclipse CDT4.5.x
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/16 06:39
2017/01/16 13:19 編集