* 1行から1組のデータを取り出します sscanfで、id, name, ymdに分解しています。
* 更にymdの文字列から、年、月、日の整数にしています。
* スラッシュを空白に変えたあとで、sscanfで年(y),月(m),日(d)を取得しています。
* 実は、sscanf(ymd,"%d/%d/%d", &y, &m, &d);だけでも動作します。
* addPersonal関数に渡します。
int readDataToMemoryList(char *filename)
{
FILE *fp;
int id;
char name[256];
char ymd[256];
char buf[BUFSIZ];
int y, m, d;
fp = fopen(filename, "r");
if ((FILE *)NULL == fp ) {
fprintf( stderr, "ERROR : Can not open %\n", filename);
return 1;
}
while ((char *)NULL != fgets( buf, sizeof buf, fp)) {
if ( DATA_COLUMN == sscanf(buf, "%d %s %s\n", &id, name, ymd)) {
char *p;
while ((char *)NULL != ( p = strchr(ymd, '/'))) {
*p = ' ';
}
sscanf(ymd,"%d %d %d", &y, &m, &d);
if ( addPersonal(id, name, y, m, d )) {
return 3;
}
}
}
fclose(fp);
return 0;
}

0 件のコメント:
コメントを投稿