2017-12-23 20 views
-2

Ich schrieb diese Codes für mein Projekt, aber ich habe Fehler in diesem Codes. Zweck dieser Funktion ist das Hinzufügen eines neuen Clients in dieser Datei. Wenn ich es verarbeite, ist es in Ordnung, aber wenn ich meine Klienten von der Datei sehen möchte, die ich Suchfunktion verarbeite, kommt es mir mehr als meine Klienten so. Ich habe versucht, es mit fscanf zu arbeiten, aber als ich es versuchte, funktioniert meine Additionsfunktion nicht vollständig, weil es nicht 'kisiler.iz' gelesen wird (bedeutet Registrierungsspur). Like thatDatei-Prozess in C

void ekle(struct kisiyapi kisiler) 
{ 
    char secenek; 
    dosya=fopen("kisiler.txt","a+"); 
    do 
     { 
     kisiler.iz=' '; 
     printf("Kisi no giriniz\n"); 
     scanf("%d",&kisiler.kisino); 
     kaypos=(kisiler.kisino-1) * sizeof(kisiler); 
     fseek(dosya,kaypos,SEEK_SET); 
     fread(&kisiler,sizeof(kisiler),1,dosya); 
     if(kisiler.iz!='*') 
     { 
     printf("Kisinin adini giriniz\n"); 
     scanf("%s",&kisiler.ad); 
     printf("Kisinin soyadini giriniz\n"); 
     scanf("%s",&kisiler.soyad); 
     printf("Kisinin Ev Telefonunu giriniz\n"); 
     scanf("%s",&kisiler.evtel); 
     printf("Kisinin Cep Telefonunu giriniz\n"); 
     scanf("%s",&kisiler.ceptel); 
     printf("Kisinin Is Telefonunu giriniz\n"); 
     scanf("%s",&kisiler.istel); 
     printf("Kisinin Dogum tarihini sirasiyla gun/ay/yil olarak giriniz\n"); 
     scanf("%d",&kisiler.dogumgunu); 
     scanf("%d",&kisiler.dogumayi); 
     scanf("%d",&kisiler.dogumyili); 
     printf("Kisinin yasadigi Il girin\n"); 
     scanf("%s",&kisiler.il); 
     printf("Kisinin yasadigi Ilce girin\n"); 
     scanf("%s",&kisiler.ilce); 
     printf("Kisinin yasadigi mahalleyi girin\n"); 
     scanf("%s",&kisiler.mahalle); 
     printf("Kisinin yasadigi sokak no girin\n"); 
     scanf("%s",&kisiler.sokak); 
     kisiler.iz='*'; 
     fseek(dosya,kaypos,SEEK_SET); 
     fwrite(&kisiler,sizeof(kisiler),1,dosya); 
     } 
     else 
     { 
      printf("Mevcut kayit var\n"); 
     } 
     printf("\nTekrar ekleme yapmak istiyor musunuz ? [e veya h]"); 
     secenek=getch(); 

     } 
     while(secenek!='h'); 
    fclose(dosya); 
} 

und diese Codes' Ziel ist es Update-Informationen von jedem Client, aber es funktioniert nicht, weil meine feof Schleife ist nicht immer arbeiten oder arbeiten. Daher kann ich meine Informationen nicht aktualisieren.

void guncelle(struct kisiyapi kisiler) 
{ 

    char aranan[20]; 
    int i=0; 
    dosya=fopen("kisiler.txt","r"); 
    yeni=fopen("temp.txt","w"); 
    if(dosya==NULL) 
     printf("Dosyaya ulasilamadi\n"); 
    printf("Guncellemek istediginiz kisinin adini giriniz\n"); 
    scanf("%s",aranan); 

    while(!feof(dosya)) 
    { 
     i++; 
    } 
    /* 
    while(!feof(dosya)) 
    { 
     fread(&kisiler,sizeof(kisiler),1,dosya); 
     kaypos=(kisiler.kisino-1) * sizeof(kisiler); 
     if(strcmp(aranan,kisiler.ad)==0) 
     { 
      printf("Kisinin adini giriniz\n"); 
      scanf("%s",&kisiler.ad); 
      printf("Kisinin soyadini giriniz\n"); 
      scanf("%s",&kisiler.soyad); 
      printf("Kisinin Ev Telefonunu giriniz\n"); 
      scanf("%s",&kisiler.evtel); 
      printf("Kisinin Cep Telefonunu giriniz\n"); 
      scanf("%s",&kisiler.ceptel); 
      printf("Kisinin Is Telefonunu giriniz\n"); 
      scanf("%s",&kisiler.istel); 
      printf("Kisinin Dogum tarihini sirasiyla gun/ay/yil olarak giriniz\n"); 
      scanf("%d",&kisiler.dogumgunu); 
      scanf("%d",&kisiler.dogumayi); 
      scanf("%d",&kisiler.dogumyili); 
      printf("Kisinin yasadigi Il girin\n"); 
      scanf("%s",&kisiler.il); 
      printf("Kisinin yasadigi Ilce girin\n"); 
      scanf("%s",&kisiler.ilce); 
      printf("Kisinin yasadigi mahalleyi girin\n"); 
      scanf("%s",&kisiler.mahalle); 
      printf("Kisinin yasadigi sokak no girin\n"); 
      scanf("%s",&kisiler.sokak); 
      kisiler.iz='*'; 
      fseek(yeni,kaypos,SEEK_SET); 
      fprintf(dosya,"%s\t%s\t%s\t%s\t%s\t%d %d %d\t%s\t%s\t%s\t%s\t%c",kisiler.ad,kisiler.soyad,kisiler.evtel,kisiler.ceptel,kisiler.istel 
      ,*kisiler.dogumgunu,*kisiler.dogumayi,*kisiler.dogumyili,kisiler.il,kisiler.ilce,kisiler.mahalle,kisiler.sokak,kisiler.iz); 
     } 

     else if(strcmp(aranan,kisiler.ad)!=0) 
     { 
      fseek(yeni,kaypos,SEEK_SET); 
      fseek(dosya,kaypos,SEEK_SET); 
      fwrite(&kisiler,sizeof(kisiler),1,yeni); 
     } 

    } 

    fclose(dosya); 
    fclose(yeni); 
    */ 
} 

Wenn Sie meine Codes verstehen, bitte helft mir ich habe keine Zeit, sich darauf vorzubereiten.

+0

'während {i ++; } 'wird mit ziemlicher Sicherheit nicht die Ergebnisse produzieren, von denen Sie uns erzählen, dass dieser Code produziert ... Welches Buch lesen Sie? – Sebivor

+1

"Wenn du meine Codes verstehst, bitte hilf mir, dass ich keine Zeit habe, sie vorzubereiten" ist keine gute Einstellung - wir sind nicht verpflichtet dir zu helfen, deine Hausaufgaben zu erledigen. –

Antwort

2

Die „eof“ Flag wird nur dann gesetzt, wenn Sie aus über das Ende der Datei zu lesen versuchen. Ihre Schleife liest nichts aus der Datei, so dass es nie das Ende erreichen wird und für immer fortfahren wird.

Und sehr viel handelt, sollte man Why is “while (!feof (file))” always wrong? lesen. (! Feof (dosya))

+0

Ich möchte etwas mehr fragen, –

+0

@ B.Yalcin Wenn Sie etwas mehr fragen möchten, können Sie gerne neue Fragen stellen. –

+0

https://shrib.com/#31vQCjkpGPy.RmaIrjPW meine Codes auf dieser Website ich dich tun something.My Leere ekelt() Funktion wird verwendet für das Hinzufügen von Benutzer aber ich kann nicht tun something.Firslty, Mein Programm will, ist nicht Hinzufügen von 3 Benutzern Hinzufügen von maximal 2 Benutzer und andere Pflicht der Funktion ist das Hinzufügen von Benutzer, wenn es leer ist. Wenn der Benutzer voll ist, gibt es keine Erlaubnis hinzufügen, aber meine While-Schleife ist einmal Schleifen, wenn ich Benutzer Nr. 1 schreibe es ist aber erfolgreich wenn ich 2 für Benutzer no und den Benutzer 2 voll schreibe, schaue meine while Schleife Benutzer Nr. 1 und gebe Erlaubnis weil nicht Benutzer 2 schaue bitte, entschuldige mein schlechtes Englisch. –