Kezdőoldal » Számítástechnika » Programozás » C nyelvben ha különböző...

C nyelvben ha különböző típusú adataim vannak vesszővel elválasztva, akkor hogy tudom beolvasni ezeket egy általam definiált structba?

Figyelt kérdés

pl.: Teszt Aladár, 1940, angol C1, vezető, 268000

typedef struct {

char nev[100];

int szulido;

char nyelv[20];

char beosztas[150];

int fizetes;

}dolgozo;



2013. okt. 10. 22:04
 1/8 anonim ***** válasza:
100%
sscanf ?
2013. okt. 10. 22:16
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
igen én is ezzel próbálkoztam, de nem akar sikerülni valamiért:((
2013. okt. 10. 22:23
 3/8 anonim ***** válasza:
Igen az a baj, hogy a nev adattagba belemegy a vessző is, ezért hibásan parsolja. Végig kell menned manuálisan a tömbbön amibe várod a bevitelt és különböző eseteket le kell kezelned.
2013. okt. 10. 22:48
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

és ha esetleg azt meg tudnám oldani, hogy vessző helyett tabbal választom el az egy sorban lévő adatokat akkor működne valahogy a sscanf-fel?!

Röviden le tudnád írni, hogy kell egyenként végigmenni a tömbön, ahogy mondtad?

Előre is nagyon szépen köszönöm a segítséged! :)

2013. okt. 10. 22:53
 5/8 anonim ***** válasza:
beállítod a vesszőt delimiternek, így a szóköz nem lesz az, a vessző viszont igen
2013. okt. 11. 00:19
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:

Ja az el is felejtettem, hogy van regex.ű

char c1[10], c2[10];

sscanf(be_adat, "%[^','],%[^','],%[^','],%[^','],%[^',']", dolgozo.nev, c1, dolgozo.nyelv, dolgozo.beosztas, c2);

dolgozo.szulido = atoi(c1);

dolgozo.fizetes = atoi(c2);

2013. okt. 11. 00:55
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:

Így is próbáltam, csak a fáradtságban elütöttem egy karaktert és azért nem működött...

Még egyszer nagyon szépen köszönöm!!! Egy idegösszeomlástól mentettél most meg :)

2013. okt. 11. 11:34
 8/8 anonim ***** válasza:

azért így szebb:


fscanf(file, "%[^','], %d, %[^','], %[^','], %d", &ember.nev, &ember.szulido, &ember.nyelv, &ember.beosztas, &ember.fizetes);


a példafájl a következő:

"Teszt Aladar, 1940, angol C1, vezeto, 268000"


nyilván működik úgy is, hogy string és sscanf


ami int azt olvassuk be integerként, ne konvertálgassunk

2013. okt. 11. 13:14
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!