chce wczytac zawratos pliku do tablicy tak zebym mogl operowac na indexach tablicy(kazdy wiersz to index tablicy)
z gory dzieki
chce wczytac zawratos pliku do tablicy tak zebym mogl operowac na indexach tablicy(kazdy wiersz to index tablicy)
z gory dzieki
No to czytaj linia po lini i zrob klase do obslugi lancuchow o zmiennej dlugosci.
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 :)
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
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 */
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