質問: read(Fd,&rec,sizeof(struct syain_k)); b=atol(rec->sno); if (n==0) { recno=0; return 0; } else { recno++; if(a==b) printf("P1"); getch(); return recno; } } } /*********************************************************************/ /* 既存データの表示処理 */ /* IN: rec 社員番号が一致した時のレコード */ /*********************************************************************/ void data_disp(struct syain_k *rec) /*表示処理*/ { int X; X=atoi(rec->sno); switch(X) { case0: printf("役員\n"); break; case1: printf("部長\n"); break; case2: printf("課長\n"); break; case3: printf("係長\n"); break; case4: printf("主任\n"); break; default: printf(" \n"); } printf("%s", rec->name); printf("%s", rec->salary); } /*********************************************************************/ /* 登録処理 */ /* IN: recno・・・レコード番号 */ /* 0:更新レコードは存在しない */ /* 1~:更新するレコード番号 */ /* IN: *sno・・・社員番号 */ /* IN: *name・・・氏名 */ /* IN: *salary・・・給与 */ /*********************************************************************/ void touroku(recno, sno, name, salary) int recno; char *sno, *name, *salary; { struct syain_k wtbuf; memcpy(wtbuf.sno, sno, 5); memcpy(wtbuf.name, name, 20); memcpy(wtbuf.salary, salary, 7); wtbuf.crlf[0]=CR; wtbuf.crlf[1]=LF; if (recno==0) lseek(Fd,0L,SEEK_END); else lseek(Fd,34*(recno-1),SEEK_SET); write(Fd,&wtbuf,sizeof(wtbuf)); } コード ```
回答: ファイルをopenしたなら、closeしましょう closeしないとファイルは空ですぜ