0
fguest
파일의 레코드를 삭제하려면이 함수를 작성했습니다. 그것은 여러 번 작동하지만 몇 번의 시도 후에 그것은 Permission denied
을 보여주기 시작합니다. 나는이 원인이 무엇인지 알아 내지 못했습니다. 원인이 무엇인지 말해 줄 수 있습니까?C에서 .dat 파일의 이름을 바꿀 때 사용 권한이 거부되었습니다
void delResPer(void)
{
int recFound;
char status[50] = " ResDeleted ";
printf("\nPlease enter Guest's ID to search: ");
if(scanf("%s",&search) != 1)
{
invalidInput();
flushStdin();
editRes();
}
flushStdin();
fguest = fopen(guestFile,"rb");
if (fguest == NULL)
{
printf("Unable to locate guestFile\n\n");
returnToMain();
}
while(fread(&grec,sizeof(GUEST),1,fguest)==1)
{
if (strcmp(grec.id,search)==0)
{
printf("\n\n\nRecord found: \n");
printf("\nGuest\'s ID\t\t: %s",grec.id);
printf("\nGuest\'s Name\t\t: %s",grec.name);
printf("\nRoom\'s Type\t\t: %d",grec.r_type);
checked(grec.r_type);
recFound = 1;
}
}
if (recFound != 1)
{
printf("No matching record found..\n");
printf("Please retry with a valid record..\n");
printf("Page is refreshing..");
Sleep(500);
editRes();
}
else if (recFound == 1)
{
printf("\n\nDelete the record (Y/N)?");
cfm = getchar();
flushStdin();
if (cfm == 'Y' || cfm == 'y')
{
ftemp = fopen(tempFile,"wb+");
rewind(fguest);
while(fread(&grec,sizeof(grec),1,fguest)==1)
{
if (strcmp(grec.id,search)!=0)
{
fseek(ftemp,0,SEEK_CUR);
fwrite(&grec,sizeof(grec),1,ftemp);
}
}
fclose(fguest);
fclose(ftemp);
if(remove(guestFile)!=0)
{
errnum = errno;
fprintf(stderr,"Failed to remove guestFile :: %s\n",strerror(errnum));
Sleep(500);
//printf("Program is exiting..");
//return;
}
if(rename(tempFile,guestFile)!=0)
{
errnum = errno;
fprintf(stderr,"Failed to rename guestFile :: %s\n",strerror(errnum));
Sleep(500);
printf("Program is exiting..");
return;
}
if (check == 1)
SpDeluxe++;
else if (check == 2)
Deluxe++;
else if (check == 3)
Premium++;
else if (check == 4)
Basic++;
refreshRoomAvail();
printf("Record is deleted successfully..\n");
Sleep(250);
returnToMain();
}
else if (cfm == 'N' || cfm == 'n')
{
printf("Deletion of record is cancelled\n");
printf("Page is refreshing..");
Sleep(500);
editRes();
}
else
{
invalidInput();
editRes();
}
}
}
오하이오 나는 본다 !!! 'fclose (fguest)'를'recFound! = 1'에 추가 한 후에는 잘 작동합니다.'cfm == 'n'|| cfm == 'N ''과'else' –