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++] Czytanie ciagu liczb z pliku - problem!

muHa 26 May 2005 13:30 3305 2
  • #1
    muHa
    Level 11  
    Witam!
    Mam maly problemik. Potrzebuje zrobic wczytywanie ciagu znakow (liczb) z pliku do pewnej tablicy.
    Moj pomysl jest nastepujacy...

    Code:
    if((input=fopen("tab.txt","r"))==NULL) {printf("\t!!! Nie mozna otworzyc!!!\n\n");}
    
                else
                    {               
                           
                             for(int c=0 ; ( c < M ) && ( feof( input ) == 0 );c++)
                            {       
                                    fscanf(input,"%d",&tab1[c]);                               
                            }   

                    }       



                            fclose(input);

    Wszystko byloby OK, gdyby nie to ze ciag znakow jest czytany poprawnie do pewnego stopnia. Otoz.. potrzebuje zadac w pliku ciag znakow zero-jedynkowy np. 0011000111000
    Niestety "0" nie jest czytane a to jest bardzo wazne?! Co mam zrobic aby te zera byly czytane rowniez?!

    A i drugi problem.. moj ciag z pliku jest zapisywany do tablicy np. tab1[30], jesli w pliku zapodam ciag znakow ..."123456789". Program poprawnie wyswietla i przepisuje do tablicy, jednak gdy do 123456789 dodalem na koncu jeszcze raz 123456789 czyli 123456789123456789 zaczynaja sie dziac dziwne rzeczy, a przeciez rozmiar tablicy nie zostal przekroczony?!

    Bede wdzieczny za kazda pomoc.
    Byc moze ma ktos pomysl na proste szczytywanaie z pliku ciag liczb!!?

    Pzdr.
  • #2
    trivial1
    Level 15  
    Ja mam podobny programik,ale on szczytuje caly text z danego pliku. Program czyta litere po literce i sprawdza czy juz koniec i odrazu wrzuca do tablicy. A na sam koniec wyswietla cala zawartosc tablicy. Mozesz sprobowac cos pozmieniac (dodac IF'y itp.) i moze bedzie dzialac tylko na liczby. Kombinuj...
    Code:

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

    int main()
    {
      clrscr();
      char *tab;
      int i, znak, licznik;
      char *sciezka = "c:\\plik.txt";

      // 1
      FILE *plikOdczyt = fopen(sciezka, "r");//atrybut read
      znak = fgetc(plikOdczyt); // ta funkcja pobiera z pliku z ktorego czytamy kolejny znak
      for (licznik = 0; znak != EOF; licznik++) {
       znak = fgetc(plikOdczyt); // ta funkcja pobiera z pliku z ktorego czytamy kolejny znak
      }
      fclose(plikOdczyt);
      printf("Ilosc znakow w pliku to: %d\n", licznik);//wyswitlamy ile znakow ma plik

      // 2
      tab = (char *) malloc((sizeof(char) * licznik) + 1);//alokujemy pamiec na tablice
                                                //ktora jest tworzona dynamicznie
      // 3
      plikOdczyt = fopen(sciezka, "r");
      znak = fgetc(plikOdczyt); // ta funkcja pobiera z pliku z ktorego czytamy kolejny znak
      for (i = 0; znak != EOF; i++) {
       tab[i] = znak;
       znak = fgetc(plikOdczyt); // ta funkcja pobiera z pliku z ktorego czytamy kolejny znak
      }
      fclose(plikOdczyt);//zamykamy plik
      tab[i] = '\0';//dodajemy znak konca linii

      printf("Tablica wyglada nastepujaco: %s", tab);

      free(tab);//zwalniamy tablice/pamiec

      getchar();
      return 0;
    }

    Pozdro...8-)
  • #3
    koodłaty
    Level 14  
    Jeśli chcesz czytać liczby z pliku, to powinieneś użyć znacznika "rb" - otwiera się wtedy plik w postaci binarnej.