応用プログラミング I 5/11
1
ファイル入力プログラム例
構造体
#include <stdio.h>
#include <stdlib.h>
#define MAXCOUNT 100 struct student {
int gcn;
char name[20];
int birth;
char tel[14];
float height;
char gradjh[20];
};
typedef struct student Student;
int main() { int i, count;
Student list[MAXCOUNT];
int birth_y, birth_m, birth_d;
int grade, class, num;
FILE *inf;
inf = fopen("listdata.csv", "r");
if(inf==NULL) { printf("error");
exit(1);
}
for(i=0; !feof(inf) && i<MAXCOUNT; i++) {
fscanf(inf, "%d,%d,%d,%[^,],%d/%d/%d,%[^,],%f,%s¥n", & grade, & class, & num, list[i].name,
& birth_y, & birth_m, & birth_d,
list[i].tel, & list[i].height, list[i].gradjh);
list[i].gcn = grade*10000 + class*100 + num;
list[i].birth = (birth_y+1900)*10000 + birth_m*100 + birth_d;
}
close(inf);
count=i;
printf("(Loaded %d records)¥n", count);
/*output*/
printf("grade,class,number,name ,birth day,telephone,height,graduated¥n");
for(i=0; i<count; i++) {
printf(" %d , %d , %d ,%s ,%d/%d/%d,%s,%.1f,%s¥n", list[i].gcn/10000, list[i].gcn/100%100, list[i].gcn%100,
list[i].name,
list[i].birth/10000, list[i].birth/100%100, list[i].birth%100, list[i].tel, list[i].height, list[i].gradjh);
}
return 0;
}
応用プログラミング I 5/11
2
配列操作プログラムテンプレート
ターミネータ方式
#include <stdio.h>
#include <string.h>
#define MAXMEMBER 10
#define MAXNAME 10 struct member {
char name[MAXNAME+1];
// personal data };
int main() {
struct member list[MAXMEMBER+1]={{{0}}}; // ターミネータ int in_num;
char in_str[MAXNAME+1];
int i;
for(;;) {
// 全体リスト表示
printf("¥n[member list]¥n");
for(i=0; list[i].name[0]!=0; i++) { printf("%s¥n", list[i].name);
}
printf(" -- %d records¥n", i);
// メニュー
printf("[menu] 1: insert/ 2: delete/ 3: end >");
scanf("%d", &in_num);
if(in_num==3) break;
switch (in_num) { case 1:
scanf("%s", in_str);
// 追加操作をここに記述 break;
case 2:
scanf("%s", in_str);
// 削除操作をここに記述 break;
} }
return 0;
}