| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
Registrovaný: 22.10.12 Prihlásený: 21.10.15 Príspevky: 18 Témy: 5 |
Dobrý deň, mám taky dosť veľký problém, potrebujem načítavať zo súboru stringy nahrávať ich do pola jedine čo viem že pole bude mať staticky zadefinované stĺpce ale neviem kolko riadkov. V súbore sú usporiadané štvorice, a každý riadok zo štvorice musí byť v inom poli, pričom platí že prvé riadky sú v prvom poli a tak ďalej mohol by mi niekto pomôcť, alebo aspoň nájsť chybu v mojom programe? Vopred všetkým ďakujem Kód: #include <stdio.h> #include <stdlib.h> #define N 51
void nacitV(char ***meno, char ***ulica, double **dan, int **datum) { int j=0; FILE *file1; if ((file1 = fopen("subor.txt", "r"))==NULL) printf("Nepodarilo sa otvorit subor"); else { while (!feof(file1)) { (*meno) = ((char **)realloc((*meno), (j+1)*sizeof(char*))); (*ulica) = ((char **)realloc((*ulica), (j+1)*sizeof(char*))); (*meno)[j] = ((char*)realloc((*meno)[j],N*sizeof(char))); (*ulica)[j] = ((char*)realloc((*ulica)[j],N*sizeof(char))); fgets((*meno)[j], N, file1); fgets((*ulica)[j], N, file1); (*dan) =(double *) realloc((*dan), (j+1)*sizeof(double)); fscanf(file1, "%lf",dan[j]); (*datum) =(int *) realloc((*datum), (j+1)*sizeof(int)); fscanf(file1, "%d",datum[j]); fgetc(file1); fgetc(file1); printf("MENO :%s",(*meno)[j]); printf("ULICA:%s",(*ulica)[j]); printf("DAN: %.2lf\n",*dan[j]); printf("DATUM: %d\n\n", *datum[j]); j++; } } }
int main(int argc, const char * argv[]) { char **meno=NULL,**ulica=NULL; double *dan=NULL; int *datum=NULL; nacitV(&meno,&ulica,&dan,&datum); return 0; }
Upravené 11.11
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 11.11.2013 10:03 | |
|
Snaž sa vždy zbaviť čo najviac hviezdičiek, pretože tie robia v programe iba bordel a robia ho veľmi neprehľadným. Ľahko tak vieš niečo prehliadnuť. Vždy sa snaž písať programy čo najprehľadnejšie, nech sa v tom vieš dobre vyznať nie len ty, ale aj hocikto iný, kto na to pozrie. Ďalej, keď používaš viacrozmerné polia, musíš si poriadne rozmyslieť, ktorý pointer ukazuje kam a čo to znamená. Takto nejako by to malo robiť to, čo chceš Kód: void nacitV(char ***p_meno, char ***p_ulica, double **p_dan, int **p_datum) { // pozri ako si zjednodusim pracu v celej funkcii char **meno = *p_meno; char **ulica = *p_ulica; double *dan = *p_dan; int *datum = *p_datum;
int j = 0; FILE *file1 = fopen( "file.txt", "r" );
if( file1 == NULL ) { printf("Nepodarilo sa otvorit subor"); return; } // ziadny else nie je potrebny
while ( !feof(file1) ) { // rozsirim kazde pole o jedna meno = (char **) realloc( meno, (j+1)*sizeof(char*) ); ulica = (char **) realloc( ulica, (j+1)*sizeof(char*) );
dan = (double *) realloc( dan, (j+1)*sizeof(double) ); datum = (int *) realloc( datum, (j+1)*sizeof(int) );
// alokujem si pamat pre novy string meno[j] = (char*) malloc( N*sizeof(char) ); ulica[j] = (char*) malloc( N*sizeof(char) );
// citam subor a pri kazdej chybe skoncim (mozem trebars aj ohlasit chybu) if( fgets(meno[j], N, file1) == NULL ) return;
if( fgets(ulica[j], N, file1) == NULL ) return;
if( fscanf(file1, "%lf\n", &dan[j]) != 1 ) return;
if( fscanf(file1, "%d\n", &datum[j]) != 1 ) return;
printf( "MENO : %s", meno[j] ); printf( "ULICA: %s", ulica[j] ); printf( "DAN: %lf\n", dan[j] ); printf( "DATUM: %d\n\n", datum[j] ); j++; } } Ak chceš tieto polia ale ďalej v programe (mimo funkcie nacitV) používať, musíš si niekde vrátiť aj počet načítaných záznamov - tj. dĺžku každého pola.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 22.10.12 Prihlásený: 21.10.15 Príspevky: 18 Témy: 5 |
Veľmi pekne ti ďakujem, za dobrú radu.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Dynamicky mikrofon v Ostatné | 0 | 428 | 17.08.2011 16:09 ultimateman | | Dynamický disk v Pevné disky a radiče | 4 | 1756 | 26.03.2010 9:29 jan037 | | dynamický obsah v JavaScript, VBScript, Ajax | 2 | 626 | 01.06.2009 9:50 pilná lama glama | | Include dynamický v PHP, ASP | 3 | 539 | 31.01.2012 1:23 shaggy | | PHP dynamický title v PHP, ASP | 10 | 592 | 25.11.2012 19:00 shaggy | | dynamicky disk - vista v Pevné disky a radiče | 9 | 1160 | 23.04.2009 19:59 AsuSmaNiaK | | Základný a dynamický disk v Operačné systémy Microsoft | 2 | 3048 | 18.04.2015 15:22 Alastor | | Dynamicky vs. Typicky kontrast v Monitory, televízory a projektory | 8 | 599 | 23.02.2014 15:00 muranec3 | | JAVA: dynamicky pridavane checkboxy v Assembler, C, C++, Pascal, Java | 4 | 375 | 27.04.2011 14:47 bimbo34 | | Dynamicky Link na obrazok v HTML, XHTML, XML, CSS | 1 | 380 | 23.01.2011 21:32 emer | | Dynamicky disk - Windows 7 v Operačné systémy Microsoft | 6 | 513 | 25.05.2015 15:24 hanesovic | | LCD TV dynamicky kontrast v Monitory, televízory a projektory | 0 | 719 | 19.11.2010 16:07 kllr007 | | Dynamický disk (chcem konvertovať) v Pevné disky a radiče | 6 | 3183 | 09.08.2010 14:30 DildoGripak | | mysql - dynamický počet fieldov v Databázy | 3 | 556 | 07.11.2009 18:46 rooobertek | | Schéma: Predzosilovač pre dynamický mikrofón v Elektronika | 0 | 5124 | 23.01.2007 4:58 Elektronic | | [VYRIESENE] priradenie premennej do pola (dynamicky) v PHP, ASP | 5 | 474 | 11.03.2009 17:04 stenley |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|