• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Operacje na plikach - początkujący DUBLOWANIE SIE OSTATNIEGO WIERSZA

Object Storage Arubacloud
0 głosów
121 wizyt
pytanie zadane 20 listopada 2018 w C i C++ przez Adiseeker Nowicjusz (200 p.)
edycja 20 listopada 2018 przez Adiseeker

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



int main ()
{
   FILE * fp;
   int i,j;

    char rows[255];
    int res;
   int len;


   char imie[21];
   char nazwisko[21];
   char adres[51];
   char miasto[61];
   char tel[10];
   char pesel[12];



/*

  printf("Podaj imie");
  scanf("%s",&imie);
 

  printf("Podaj nazwisko");
  scanf("%s",&nazwisko);
 


  printf("Podaj adres zamieszkania");
  scanf("%s",&adres);

  printf("Podaj miasto");
  scanf("%s",&miasto);
  


  printf("Podaj nr.tel");
  scanf("%s",&tel);
  

  printf("Podaj pesel");
  scanf("%s",&pesel);
  




   fp = fopen ("xd.txt","a");




       fprintf (fp, "|%s     |%s     |%s     |%s      |%s       |%s       |\n" ,pesel,imie,nazwisko,adres,miasto,tel);





   fclose (fp);


*/

  char* filename = "xd.txt";

    fp = fopen(filename, "r");
    if (fp == NULL){
        printf("Could not open file %s",filename);
        return 1;
    }
    while (fgets(pesel, 21, fp) != NULL)
        printf("%s", pesel);





fclose(fp);

char name[21];
printf("Podaj imie: ");
scanf("%s",name);





fp = fopen(filename, "r");

 if (fp == NULL)
    {
        printf("Could not open file %s",filename);
        return 1;
    }
while(fgets(rows,sizeof(rows),fp)!=NULL)
{



fscanf(fp,"%s %s %s %s %s %s",pesel,imie,nazwisko,adres,miasto,tel);

if (strstr(imie, name) != NULL)
    {


     printf("%s %s %s %s %s %s\n",pesel,imie,nazwisko,adres,miasto,tel);


    }



}



    fclose(fp);

    return 0;



}

 

 

char name[21];
printf("Podaj imie: ");
scanf("%s",name);





fp = fopen(filename, "r");

 if (fp == NULL)
    {
        printf("Could not open file %s",filename);
        return 1;
    }
while(fgets(rows,sizeof(rows),fp)!=NULL)
{



fscanf(fp,"%s %s %s %s %s %s",pesel,imie,nazwisko,adres,miasto,tel);

if (strstr(imie, name) != NULL)
    {


     printf("%s %s %s %s %s %s\n",pesel,imie,nazwisko,adres,miasto,tel);


    }



}

Witam mam do wykonania prostą bazę danych .Dane mają zostać zapisane do pliku ,nastepnie odczytane z pliku .

Powinny dodane zostac jeszcze filtry danych ,prawie wszystko działa ,ale przy filtrowaniu ostatnia linijka z pilku tekstowego jest zdublowana nie wiem co powoduje ten problem probowalem dac while()== 1 albo rowne ilosc wierszy w pliku tekstowym  przed "fscanf"  ,ale to nic nie daje .

Podalem specjalnie tez dwa kody drugi to czesc ,ktora dziala wadliwie ,a pierwszy to glowna czesc programu bez walidowania danych 

Drugim natomiast moim problem jest to ,że program nie czyta od poczatku pliku txt ,tylko zaczyna od drugiego wiersza.

Czy moglby ktos mi pomoc? 

1 odpowiedź

0 głosów
odpowiedź 20 listopada 2018 przez jeremus Maniak (59,720 p.)

to dlatego ze dublujesz czytanie wiersza przez fgets i fscanf

zrób tak zamiast fgets które nie jest Ci potrzebne

while( fscanf(fp,"%s %s %s %s %s %s",pesel,imie,nazwisko,adres,miasto,tel) != EOF  )

 

Podobne pytania

0 głosów
0 odpowiedzi 315 wizyt
pytanie zadane 8 grudnia 2018 w C i C++ przez matiibal Użytkownik (620 p.)
0 głosów
0 odpowiedzi 174 wizyt
pytanie zadane 29 stycznia 2018 w C i C++ przez Artur313 Użytkownik (790 p.)
+1 głos
1 odpowiedź 1,240 wizyt
pytanie zadane 6 września 2020 w JavaScript przez Marak123 Stary wyjadacz (11,190 p.)

92,568 zapytań

141,422 odpowiedzi

319,629 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...