ďťż

Ładny brzuch

Potrzebuję stworzyć dwuwymiarową tablicę typu char. Problem jest mniej więcej taki:

z pliku .txt czytam kilka stringów np. imion i te imiona chcę umieścić w tablicy i potem odwoływać się do nich przy pomocy indexu tablicy.

Czyli coś w stylu:

FILE *fp;
char imiona[dlugosc chara][index poprzez który chcę się odwołać do elementów tablicy];
fp=fopen("imiona.txt","r");
for(int i=0;i<n;i++)
fscanf(fp,"%s",imiona[][i]);

i teraz jak wypisze imiona[][0] to sie pierwsze imię powinno wypisać

Czy coś takiego jest możliwe w C,C++?




Czy coś takiego jest możliwe w C,C++?
Jest mozliwe.

@down: a co wiecej napisac? Odpowiedzialem na jego pytanie
Użytkownik icek edytował ten post 09 kwiecień 2007, 11:01
icek - nie ma to jak wyczerpujaca odpowiedz ;)

dwa sposoby:
1) najpierw zbadac dlugosc pliku, a pozniej dynamicznie stworzyc tablice jak wskaznik
2) uzyc vector z STL i dodawac po jednym


1) najpierw zbadac dlugosc pliku, a pozniej dynamicznie stworzyc tablice jak wskaznik

mogłbyś napisać w jaki sposób umieścić w tablicy slowa przeczytane z pliku?
załóżmy, że w pliku .txt mam takie słowa:

slowoA
slowoB
slowoC

thx:)



#include <iostream> #include <vector> #include <string> #include <fstream> #include <algorithm> #include <iterator> using namespace std; int main() { vector<string> slowa; fstream plik; string nazwa_pliku,tmp; cout << "podaj nazwe pliku: " ; cin >> nazwa_pliku; plik.open(nazwa_pliku.c_str(),ios::in); if( plik.is_open() ) { while(1) { plik >> tmp; if( plik.eof() ) break; slowa.push_back(tmp); } plik.close(); } copy( slowa.begin(), slowa.end(), ostream_iterator<string>(cout,"\n") ); return 0; }

// edit : zamiast tej petli mozna chyba cos takiego:
if( plik.is_open() ) { copy( istream_iterator<string>(plik), istream_iterator<string>(), back_inserter(slowa) ); plik.close(); }
prosciej i szybciej ;D
Użytkownik icek edytował ten post 09 kwiecień 2007, 12:32
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •