Kezdőoldal » Számítástechnika » Programozás » Létezik egy univerzális...

Létezik egy univerzális módszer file beolvasásra?

Figyelt kérdés

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.



2020. febr. 16. 11:17
1 2
 1/11 anonim ***** válasza:
17%
Nem létezik.
2020. febr. 16. 12:04
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:
100%
A konkrét kódot te szépen megírod, konkrátan publikálod, mi meg konkrétan segítünk megkeresni, hogy te konkrétan hol és mit b..szol el benne.
2020. febr. 16. 12:33
Hasznos számodra ez a válasz?
 3/11 A kérdező kommentje:

#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.

2020. febr. 16. 12:36
 4/11 A kérdező kommentje:

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

2020. febr. 16. 12:38
 5/11 anonim ***** válasza:
100%
A while ciklusodba minek for százig? Eofhoz érés stabil kilépési feltétel, nyugodtan inkrementálhatod az i-t. A második for ciklus helyett is mehet while i<sizeof
2020. febr. 16. 13:08
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
100%

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.

2020. febr. 17. 07:50
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:
Nekem a felbontás része nem megy. Mert beolvasni betudom soronként, csak utába szétszedni nem :/
2020. febr. 17. 16:27
 8/11 A kérdező kommentje:

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.

2020. febr. 17. 16:29
 9/11 A kérdező kommentje:
Az első kódban amit küldtem ott nem tudom mi a baja a meghívott foglal_feltolt fügvénnyel. Az "utca" nem tetszik neki valamiért.
2020. febr. 17. 16:33
 10/11 anonim ***** válasza:
Mondjuk azt nem is néztem, hogy rosszul hívod meg. Visszatérési érték minek van? Típust miért kellene híváskor deklarálni? Hol a k változó, abban a scopeban kerites van odaillő típussal.
2020. febr. 18. 20:00
Hasznos számodra ez a válasz?
1 2

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!