v2.5.2
Giriş yap

c de dosya işlemleri

mce
441 defa görüntülendi

once 3-5 tane ekleme yapıyorum ardından goruntuleme yapıyorum ve sorunsuz ama sonrasında bı tane ögrenci sıldıkten sonra tekrar goruntuleme yapınca hata alıyorum

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
	int no;
	char name[20];
	float gpa;
}student;
int main (){
int choice;
int stdno;
FILE *fp;
FILE *fpnew;
fp=fopen("students2.dat","ab+");
student temp;
while(1){
	printf("\n1-add student \n2-display student \n3-delete student : ");
	scanf("%d",&choice);
	switch(choice){
		case 1:
			fseek(fp,0,SEEK_END);
			printf("enter number: ");
			scanf("%d",&temp.no);
			printf("enter name: ");
			scanf("%s",temp.name);
			printf("enter gpa: ");
			scanf("%f",&temp.gpa);
			fwrite(&temp,sizeof(student),1,fp);
		    fflush(fp); 
			break;
		case 2:
			fseek(fp,0,SEEK_SET);
			fread(&temp,sizeof(student),1,fp);
			while(!feof(fp)){
			printf("%d %s %.2f\n",temp.no,temp.name,temp.gpa);
			fread(&temp,sizeof(student),1,fp);
			}
			break;
			case 3:
			fseek(fp,0,SEEK_SET);
			fpnew=fopen("students2_new.dat","wb");
			printf("enter number of the student: ");
			scanf("%d",&stdno );
			fread(&temp,sizeof(student),1,fp);
			while(!feof(fp)){
				if(temp.no != stdno){
					fwrite(&temp,sizeof(student),1,fpnew);
					fflush(fpnew);
					}
				fread(&temp,sizeof(student),1,fp);
			}
			fclose(fp);
			fclose(fpnew);
			remove("students2.dat");
			rename("students2_new.dat","students2.dat");
			break;
			}
}
return 0;
}
Cevap yaz
Cevaplar (0)
Henüz kimse cevap yazmadı. İlk cevap yazan sen ol!