Προς το περιεχόμενο

Αναζήτηση σε αρχείο


chrislem

Προτεινόμενες αναρτήσεις

Δημοσ.

Ρε παιδιά πως μπορείς να κάνεις αναζήτηση μέσα σε ένα text αρχείο με την C. Γράφω με Borland C. Στο αρχείο θα έχω καταχωρήσει πιο πριν απο το πληκτρολόγιο ένα όνομα και ένα id και θέλω ο χρήστης να δίνει ένα id και να το βρίσκει στο αρχείο αν υπάρχει και να σβήνει και το όνομα και το id!

Δημοσ.

δοκίμασε αυτό

 

 

>

#include <stdlib.h>
#include <stdio.h>



struct data1{
int id;
char name[21];
};

char line1[80];
void getdata(int);
void deleteByID(int);
void readFileData();

FILE * file1;
FILE * file2;

int main(){
   
        getdata(4);
        readFileData();
    int idToFind=-1;
    printf("\npio id na bro kai na sbiso:");
    scanf("%d",&idToFind);    
     deleteByID(idToFind);   
     readFileData();
     int xxx;
     scanf("\n%d",&xxx);
}


void getdata(int posoi){
    file1=fopen("persons.dat","wt");
    struct data1 person;
   for (int i=0;i<posoi;i++){
      printf("\ndwse id:");
      scanf("%d",&person.id);
      printf("\ndwse onoma:");
      scanf("%s",&person.name);
      fprintf(file1,"%d,%s\n",person.id,person.name);
 }
      fclose(file1);
}


void deleteByID(int id){
struct data1 person;
file1=fopen("persons.dat","rt");
file2=fopen("persons1.dat","wt");
while(fgets(line1, 80, file1)!=NULL) { 
                    sscanf(line1,"%d,%s",&person.id,&person.name);
     if(person.id!=id)
              fprintf(file2,"%d,%s\n",person.id,person.name);        
}
fclose(file1);
fclose(file2);
int status;
status = rename("persons.dat", "persons.bak");
status = rename("persons1.dat", "persons.dat");
status=remove("persons.bak");

}

void readFileData(){
    printf("\n=============periexomena arxeioy=============");
    	struct data1 person;
file1=fopen("persons.dat","rt");

 while(fgets(line1, 80, file1)!=NULL) { 
                    sscanf(line1,"%d,%s",&person.id,&person.name);
     printf("\nid=%d , name=%s", person.id,person.name);        
}
	fclose(file1);
    }
    


Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...