Plik >> Tablica

0

chce wczytac zawratos pliku do tablicy tak zebym mogl operowac na indexach tablicy(kazdy wiersz to index tablicy)

z gory dzieki

0

No to czytaj linia po lini i zrob klase do obslugi lancuchow o zmiennej dlugosci.

0

char *tablica[ile_tych_wierszy_potrzebujesz];

//otwierasz plik
//wczytujesz linie do lancucha znakow, np. przez fgets
tablica[i] = lancuch_znakow

i juz :)
Wiecej informacji o takim dodawniu lancuchow do tablicy w sasiednim temacie :)

0

hm......


void vSortujCzysc(FILE *stream)
{
  int i=0, c=0;
  char z;
 
  while ((z= fgetc(stream)) != EOF) 
    if (z== '\n') i++; 
      
  char  *cTab = new char [i];

  fseek(stream, 0, SEEK_SET); 
  
  do
  {
    fscanf(stream,"%s\n", &cTab[c]);  
    c++; 
  }while(feof(stream)); 
  
  for(int k=0;k<12;k++) printf("tab[%d] = %s\n",k, &cTab[k]);
  
  delete [] cTab;
}

nie dziala

0

dryo z twoim kodem to wylew pamieci jak krwotok normalnie, nie mozesz wskaznikowi przypisywac Od razu tekstu, najpierw musisz zaalokowac pamiec a puznij skopiowac tam tekst [cmok]

/* Uznalem to za oczywiste. Dlatego odeslalem do drugiego postu, jakby oczywiste nie bylo :P */

1

Re...
Ja tam bym to zrobil tak:

char **
wczytaj_plik_do_tablicy( const char *nazwa )
{
  FILE *f;
  char **wiersze, *text;
  unsigned long wielkosc_pliku, ilosc_linii = 0, i, linia = 0;

  f = fopen( nazwa, "rb" );
  if( !f ) return NULL;
  
  fseek( f, 0, SEEK_END );
  wielkosc_pliku = ftell( f );
  fseek( f, 0, SEEK_SET );
 
  text = (char*)malloc( wielkosc_pliku );
  fread( text, 1, wielkosc_pliku, f );
  fclose( f );

  for( i = 0; i < wielkosc_pliku; i++ )
  {
     if( text[i] == '\n' ) ilosc_linii++;
  }

  wiersze = (char**) malloc( sizeof( char* ) * ilosc_linii;

  for( i = 0; i < wielkosc_pliku; i++ )
  {
     if( i == 0 )
     {
        wiersze[ linia++ ] = &text[i];
     }
     else if( text[i] == '\r' )
     {
        text[i] = '\0';
     }
     else if( text[i] == '\n' )
     {
        text[i] = '\0';
        if( i + 1 < wielkosc_pliku ) wiersze[ linia++ ] = &text[ i ];

     }
  }


  return wiersze;  
}

ofc procka czyszczaca robila by free( *wiersze );
a potem free( wiersze );

kod ten ofc mozna duzo lepiej napisac, co mam nadzieje uczynisz..
trzeba by dodac wywalanie pustych linii etc
gritz, gyn

1 użytkowników online, w tym zalogowanych: 0, gości: 1