Létezik egy univerzális módszer file beolvasásra?
Emelet informatika érettségire készülök (készülnék), de a programozásnak az a része ahol file-ból kell adatokat beolvasni nem megy. Illetve megy, csak nem úgy ahogy kellene. Nem mellesleg a C nyelvről van szó.
Az lenne a kérdés, hogy létezik-e olyan file beolvasási módszer, amit akármikor elő lehet venni, és max egy kis változtatással lehet használni bármilyen féle/fajta (szöveges) file beolvasására. Korábbi érettségi feladatokat próbálok megodani, és mivel ezzel kezdődik az összes feladat ezért gondoltam jobb lenne bemagolni egy konkrét kódot mint, hogy ott találjak ki helyben egyet, ami nem biztos, hogy működni fog.
Tehát ha ezt kell beolvasni:
(csak mondjuk 10x ennyit)
1 E 3
12 F 6
7 G 9
8 H 4
2 I #
9 X :
akkor minden sorban minden számot és karaktert külön tárol, hogy később lehessen velük külön-külön foglalkozni.
Struktúrákkal próbáltam, de abban még kezdő vagyok, így nem is sikerült beolvasnom.
A suliban ahova középiskolába jártam egyáltalán nem tanítottak programozást, ezért most itthon kell egyedül felkészülnöm. (Bár egyre kevesebb esélyt látok rá, hogy menni fog)
Jó lenne, ha ebben tudnátok segíteni, és nem kertelek:
Tulajdonképpen egy konkrét kód kéne.
Struktúrával nem tűnik nehéznek, de valamit nem veszek észre ami miatt nem fut le rendesen a programom.
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int oldal;
int szelesseg;
char szin;
}utca;
FILE * fPointer;
int foglal_feltolt(utca **k);
int main()
{
utca *kerites;
fPointer = fopen("kerites.txt","r");
printf("korte1\n");
foglal_feltolt(utca **k);
int i=0;
printf("korte2\n");
}
int foglal_feltolt(utca **k){
int i=0;
printf("alma0\n");
while(!feof(fPointer)){
for(i=0;i<=100;i++){
fscanf(fPointer,"%d, %d, %c", &(*k)[i].oldal, &(*k)[i].szelesseg, &(*k)[i].szin );
}
printf("alma1\n");
}
fclose(fPointer);
for(i=0;i<=100;i++){
printf("%d, %d, %c\n", (*k)[i].oldal, (*k)[i].szelesseg, (*k)[i].szin );
}
printf("alma2\n");
}
A beolvasandó file olyan mint a példában.
Az alma meg csak hibakeresés miatt volt ott.
a file első pár sora:
0 10 P
1 8 K
1 10 :
1 9 S
0 10 P
1 8 B
1 9 F
0 12 W
1 10 K
1 8 I
1 16 D
1 15 S
1 15 P
Viszonylag általános az érettségire létezik.
Olyan dolog, amit bemagolhatnál, és attól tudsz majd programozni, nem létezik. Meg kell érteni, és akkor könnyű lesz.
Az érettségi adatállományok minden esetben a következő struktúrát követik:
* Sima ASCII szöveges adat, ékezetek nélkül. Nincs semmiféle strukturált adat, rekord stb. bennük.
* Soronként kell beolvasni, erre írsz egy ciklust.
* Előre megmondják, max. hány adat lehet, többre nem kell számítani.
* Minden sor ugyanazt a szerkezetet követi, legfeljebb annyi eltérés lehet, hogy valamelyik oszlop üres, és lehet az első sorban csak egy szám, ami meghatározza a további adatsorok számát.
* A sorokban az adatok megadott jellel vannak tagolva (szóköz, tabulátor stb.)
* Ezt kell beolvasni egy tömbbe, és feldolgozni. Ciklusban beolvasod a sorokat egy változóba, elvégzed a felbontást, és tárolod.
* Általában kétdimenziós tömb célszerű, bár ezt nem szokták előírni, tehát te tárolhatod egyetlen sz9vegként az egészet, csak nehéz lesz feldolgozni.
Erre nem olyan bonyolult megtanulni az eljárást.
A legelső beolvasásomat ezzel csináltam:
while(!feof(fPointer)){
fgets(line[cLine],51,fPointer);
printf("%s",line[cLine]);
cLine++;
}
fclose(fPointer);
és arra feladatra jó is volt, mert nem kellett a sorokon belül magukkal a karakterekkel foglalkozni.
De a fenti példában már minden karakternek jelentése van így nem használhatom csak egy sorként az egészet.
És ez az ahol nem tudok tovább menni.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!