以下のような構造の accounts.dat というデータ ファイルがあります。
1000:Cash
3000:Common Shares Outstanding
1400:Office Equipment
ファイルを開く/リンクするために fopen() を使用しています。そして、フォーマット文字列「%d:%[^:]\n」に基づいて値を取得するために fscanf() を使用しています。%d はアカウント番号を表し、':' はデリミネータ、[^:] は ':' 以外のすべての文字です。
void getdataf() {
FILE * infileaccs;
FILE * infiletrans;
int acctnumf;
char acctdesf[DESMAX];
char filenameacc[40] = "accounts.dat";
infileaccs = fopen(filenameacc, "r");
if(infileaccs==NULL){
printf(" **File \"accounts.dat\" could not be read\n");
printf(" **Previously entered account titles are not available\n");
printf(" **Any previously entered transactions will not be used\n");
} else{
int i=0;
while(fscanf(infileaccs, "%d:%[^:]\n",&acctnumf,acctdesf)!= EOF){
acct[i++]=acctnumf;
srtaccttyp(acctnumf, i);
printf("------------>Added unique acct type %d!\n", accttyp[i]);
printf("------------>element: %d is added into acct array in position acct[%d]\n",acctnumf,i);
nacct++;
accttitle(acctdesf);
}
fclose(infileaccs);
} }
ただし、このコードは機能せず、フリーズするだけです。さらに情報が必要な場合はお知らせください。事前に感謝します。
whileループで止まっているようです。