Kezdőoldal » Számítástechnika » Programozás » Hogyan kell számokat beolvasni...

Hogyan kell számokat beolvasni fájlól 2 dimenziós tömbbe?

Figyelt kérdés

Van több szöveges fájlom, amiben mátrixos elrendezésben számok vannak. A feladat az amit írtam a kérdésben, viszont ezt külön függvénnyel kell megoldani. Ha csak a main-ben csinálom (értsd függvény nélkül), úgy már jó, de nyilván az lenne a lényeg, hogy ne kelljen ötezerszer leírni a dupla for ciklust minden fájlra. Érthetőbb lesz ha bemásolom a kódot ami eddig van:

(olvashatóbban itt: [link] illetve benne a valami.txt tartalma)


#include <stdio.h>

void szamok(const char *filename, int n, int m, double tomb[n][m])

{

FILE *file = fopen(filename, "r");

if(file != NULL)

{

int i, j;

for( i = 0; i < n; i++)

{

for( j = 0; j < m; j++)

{

if (!fscanf(file, "%lf", &tomb[n][m]))

break;

}

}

fclose(file);

}

else

{

perror(filename);

}

}


int main()

{

int n = 2, m = 4, i, j;

double test[n][m];

const char filename[] = "valami.txt";

szamok(filename, n, m, test);

for (i = 0; i < n; i++)

{

for (j = 0; j < m; j++)

{

printf("%lf ", test[i][j]);

}

printf("\n");

}

return 0;

}


Ez azért nem jó, mert amikor kiíratnám a main-ben, csupa 0-át ír, vagy azon a memterületen lévő akármilyen számokat, bizonyára valami pointeres dolog lesz, vagy elvi hiba, de nem tudok rájönni :(



2016. ápr. 3. 21:25
 1/2 anonim ***** válasza:

if (!fscanf(file, "%lf", &tomb[n][m]))

helyett

if (!fscanf(file, "%lf", &tomb[i][j]))


Senki sem szereti igazán a VLA-t. C99-ben berakták és egyből ki is szedték. A tömb méretét konstans kifejezéssel add meg mindig, vagy makróval definiáld. Ha nem ismered fordítási időben azt, akkor dinamikusan foglalj területet.


ANSI C-ben pedig a printf() függvénynél nem értelmezett az %lf, csak az %f. Ezt is érdemes figyelembe venni.

2016. ápr. 4. 00:10
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:
Rendben, köszönöm javítottam!
2016. ápr. 4. 10:38

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!