C 프로그래밍에서 순차 파일 액세스에 대한 도움이 필요합니다. 다음 코드는 필자가 작성한 코드의 일부입니다.C 프로그래밍을 사용한 순차 파일 액세스
레코드를 삽입하고 레코드를 검색하고 모든 레코드를 표시 할 수 있습니다. 을 수정하고 삭제할 때 필요한 결과를 얻을 수 없습니다. 이 경우 제게 지시 해 주시겠습니까?
#include<stdio.h>
#include<stdlib.h>
int c,i,id;
char name[20];
FILE *fp;
int n;
int search(FILE *fp,int id);
void display(FILE *fp);
typedef struct details
{
int id;
char name[20];
}details;
details d;
void main()
{
printf("\nHow many records you would like to insert ? : ");
scanf("%d",&n);
fp=fopen("one.txt","a");
for(i=0;i<n;i++)
{
printf("\nEnter id and name");
scanf("%d%s",&d.id,d.name);
fwrite(&d,sizeof(d),1,fp);
}
fclose(fp);
while(1)
{
printf("\nWhat would you like to do now ? : \n");
printf("\n1.Display \t2.Search \t3.Modify \t4.Delete \t5.Exit");
scanf("%d",&c);
switch(c)
{
case 1:
fp=fopen("one.txt","r+");
display(fp);
fclose(fp);
break;
case 2:
fp=fopen("one.txt","r+");
printf("\nEnter ID to search : ");
scanf("%d",&id);
if(search(fp,id))
{
printf("\nThe record is as follows : ");
printf("\n%d\t%s",d.id,d.name);
}
else
printf("\nRecord not found");
fclose(fp);
break;
case 3:
fp=fopen("one.txt","r+");
printf("\nEnter ID to modify d record : ");
scanf("%d",&id);
if(search(fp,id))
{
printf("\nEnter new name");
scanf("%s",d.name);
fwrite(&d,sizeof(d),1,fp);
}
else
printf("\nSpecified record not found ");
fclose(fp);
break;
}
}
}
int search(FILE *fp,int id)
{
rewind(fp);
while(fread(&d,sizeof(d),1,fp))
{
if(id==d.id)
return 1;
}
return 0;
}
void display(FILE *fp)
{
rewind(fp);
while(fread(&d,sizeof(d),1,fp))
{
printf("\n%d\t%s",d.id,d.name);
}
}
*** int *** main ... –
그리고 사용자 입력을 얻기 위해'scanf()'를 사용하지 않으면'fgets()'만으로 충분합니다. 그리고 ** fwrite()의 리턴 값을 ** 확인한다. –
void main()가 작동합니다. – JackCColeman