Kezdőoldal » Számítástechnika » Programozás » Miért nem olvassa be a fájl...

Miért nem olvassa be a fájl tartalmát?

Figyelt kérdés

A probléma a 2014 Okt.-i emelt érettségi programozós feladatába van. Sima C nyelven dolgozok.


A "kategoria.txt" -t próbálom beolvasni és lehetetlen. A fájl egy 15 soros és soronként van 20 számjegy. Bármelyik indexedik elemet, ha megpróbálom kiírni 0-át kapok.

A fájl-t már kipróbáltam sokféle karakterkódolással, akkor se jó.


Több mint valószínű, hogy a kóddal van valami és képtelen vagyok rájönni mi az.


#include <stdio.h>

#include <stdlib.h>


int kategoriak[15][20];


int main()

{

FILE *be;

be = fopen("kategoria.txt","r");

int i, j;


for(i=0; i<15; i++){

for(j=0; j<20; j++){

fscanf(be, "%d", &kategoriak[i][j]);

}

}


fclose(be);


return 0;

}



2015. máj. 9. 10:56
 1/6 A kérdező kommentje:

ilyeneket is kiír:


149383505414938350541493835054-128195523

-12819552321317470612131737061246845173


Fasza....

2015. máj. 9. 11:04
 2/6 A kérdező kommentje:
Jah még annyi, hogy ha nootpad++ ba megnézem a fájlt akkor ott van a végében a CRLF. Lehet az a baj?
2015. máj. 9. 11:12
 3/6 anonim ***** válasza:

A CRLF egész biztosan nem okozhat problémát.

A karakterkódolás sem, mert számok vannak benne. Érettségin amúgy adnak fel programozásból ékezetes szövegeket, de számoknál fel sem merülhet.

Az egyik probléma, hogy összekevered a -ba és a -ban toldalékot, amitől szemantikai hibás mondatokat írsz. Így nem lehet programozni, ennél itt nagyobb pontosság kell. Ezt ne vedd kötekedésnek, összefügg a problémáddal.

A másik, hogy helytelenül értelmezted a feladatot. Az egyes sorokban egyjegyű számok vannak egymás mellett, jó sokan. Ezt ugye nyilvánvalóan nem lehet a %d formázóval számként beolvasni, mert a gépnek fogalma sincs, meddig ér az a szám, amire te kíváncsi vagy, tehát olvas a sor végéig, és így összesen 20-szor annyi számot olvasol be, mint amennyi van, innentől kezdve pedig egy C programtól szinte bármi kitelik. Az azért furcsa, hogy bármit is kiírt, mert nincs benne print.


Talán a legegyszerűbb lenne karakterenként beolvasni az állományt, mert akkor biztosan egyjegyűek lesznek, és azt átalakítani számokká.

2015. máj. 9. 11:57
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

Köszönöm! Azért ez elég érdekes, hogy egy számként kellene beolvasnom a sorokat, mivel a számokkal egyenként tehát egyjegyű számokkal kell dolgoznom.


De azért nem is gondoltam volna, hogy rossz az elképzelésem mivel van egy ugyan ilyen fájl csak abba karakterek vannak és ugyan ezzel a megoldással sikerült azt beolvasni.

2015. máj. 9. 16:55
 5/6 A kérdező kommentje:
Karakterként sikerült! :)
2015. máj. 9. 17:07
 6/6 anonim ***** válasza:
Na ez a lényeg, és legközelebb rögtön le fog esni a tantusz! :-)
2015. máj. 9. 17:39
Hasznos számodra ez a válasz?

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!