Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C] zliczanie ilości linii w pliku

26 Feb 2009 18:28 15188 7
  • Level 13  
    Witam,
    Mam taki problem, a mianowicie jak pobrać szybko liczbę znaków nowej linii z pliku (czyli enterów)?
    np. mam plik:
    sasdasd sdasd
    asdasd sdaas
    dd
    ssd
    to dla takiego pliku ta liczba to 4. Jakoś tak kombinuje, ale nie umiem wymyslić algorytmu.
    Code:
    string bufor;
    
    FILE *f=fopen("plik.txt","r");
    if(f==NULL) perror("Nie mozna otworzyc pliku");
    else
    do
      {
      fscanf(plik,"%[ ,\n]s",&bufor);
      rows=rows+1;
      }
    while(????);


    Proszę podawać maksimum informacji w temacie postu (Regulamin, p. 11).
    Temat poprawiłem.
    [Dr.Vee]
  • Level 11  
    możesz liczyć wiersz po wierszu i liczyć je aż dojdziesz do końca pliku albo wczytywać znak po znaku sprawdzać czy wczytany znak to enter i jak tak to zwiększać ilość enterów.
  • Level 18  
    gdybyś może nie wiedział: "Enter" to 2 bajty o wartości 13 i 10
  • Level 23  
    Chciałbym tylko przypomnieć że w windows i pochodnych nowy wiersz to kombinacja CR LF.
  • VIP Meritorious for electroda.pl
    Nie kombinujesz tak źle, ale chyba musisz doczytać manual do fscanf.

    Nie lepiej w pętli getchar() i porównywać z '\n' i '\r'?

    Pozdrawiam,
    Dr.Vee
  • Level 34  
    A dlaczego nie można tak:
    Code:

     int ile=0;
     string st;
     FILE *plik;
     ifstream plik_odczyt("d:\\dane_a.txt");
     while(!plik_odczyt.eof())
      {
       getline(plik_odczyt,st);
       ile++;
      }
      printf ("ilosc linii w pliku: %d \n",ile-1 );     

    wykorzystując że znak końca linii: 0D 0A (hex).
  • Level 26  
    Prosty kod w C .Parametrem wywołania jest nazwa pliku w którym mają zostać zliczone wiersze.
    Code:
    #include <stdio.h>
    

    main(int argc, char *argv[])
    {
       FILE *plik;
       int wiersz = 0;
       char znak;

       if((plik = fopen(*++argv, "r")) == NULL)
       {
          printf("nie mogę otworzyć pliku %s\n", *argv);
          return 1;
       }

       while((znak = getc(plik)) != EOF)
       {
          if(znak == '\n')
             ++wiersz;
       }
       printf("Plik zawiera %d wiersze\n", wiersz);
    }

  • VIP Meritorious for electroda.pl
    Koledzy ed-ek i archanoid - chyba widać, że kolega pomozcie19 dostał zadanie do samodzielnego rozwiązania - nie ma potrzeby żeby go wyręczać...

    Pozdrawiam,
    Dr.Vee