Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet egy file-ból...

Hogyan lehet egy file-ból több sor is kiolvasni? (C nyelv)

Figyelt kérdés

Írtam egy C-s kódot és az egy fileból iolvas sztringet.

Nos, a kód megcsinálja amire írtam, de ha a file-ban van sortörés akkor azt már nem olvassa be.

Próbáltam gets-vel de az meg nem képes file-ból olvasni /* legalábbis én nem tudom hogyan kell csinálni*/

(egyébként fscanf-vel olvastatom be.)

Valami megoldás??

Köszönöm szépen!

És mellesleg ilyen függvényeket hol találok C-hez??

Olyanokat mint a gets,scanf... miket lehet benne csinálni mivel itton tanulom?.


2011. dec. 4. 19:10
 1/8 anonim ***** válasza:

Ha bemásolnád a kódot, lehet könnyebb lenne...

Amúgy egy pár hasznos dolog: [link]

2011. dec. 4. 21:45
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
2011. dec. 5. 00:40
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
UI: ha mutatsz kódot, szívesen segítek :)
2011. dec. 5. 00:40
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

Köszi már ezek is sokat segítettek!

Fogom írni a kódot is csak pár dolgot átírok(változónevek, megjegyzések), mert amit én fejben tartok azt ti nem látjátok! :D

2011. dec. 5. 19:15
 5/8 A kérdező kommentje:

uhhh végre ide is eljutottam.


#include<stdio.h>

int main()

{

char szoveg[50];

FILE *file;

file=fopen("C:\\a\\valami.TXT","r"); /* ugye itt file kezelés lesz*/

fscanf(file,"%s",&szoveg); /* ez az a rész amikor kiolvasa a file-ból a szöveget, de csak egy részét szóval sortörést nem olvas be.*/

/* próbáltam: fgets(szoveg); - vel és fgets(file,szoveg); -vel is de azt meg hibának jelezte.*/

fclose(file); /* itt befelyezi a fileval való munkát*/

printf("%s",szoveg);

}


/* próbáltam úgy is hogy:*/

#include<stdio.h>

int main()

{

int a;

char szoveg[50]; /* a sortörés előtti szöveg sztringje*/

char szoveg2[50]; /* a szortörés utáni szöveg sztringje*/

FILE *file;

file=fopen("C:\\a\\valami.TXT","r");

fscanf(file,"%s",&szoveg);

if(szoveg[strlne(szoveg)]=='\n') /* ha a szöveg tartalmazza azt hogy: \n azaz sortörést akkor csinálja:*/

{

for(a=0;a<=strlen(szoveg);a++) /*annyi backspace-t vagyis törlést nyom le amennyi az első sorban lévő karakterek száma*/

{

fprintf(file,"\b");

}

fscanf(file,"%s",&szoveg2); /* utánna egy másik sztringbe kkiolvassa a második sort ami az első törlése miatt az első így ki bírja olvasni.*/

}

}


Nem tudom, hogy mennyire jó a kód.

Próbálkoztam és sehogy sem sikerült több sort kiolvasnom egy file-ból...

2011. dec. 11. 15:10
 6/8 A kérdező kommentje:

ui.: a 2. kódban lenne még egy olyan is, hogy #include<string.h>

mivel ez kell, hogy tudjam használni a(z) strlen() függvényt

2011. dec. 11. 15:12
 7/8 anonim ***** válasza:

#include <stdio.h>

#include <stdlib.h>


/*

Megjegyzés : nincs fordító se a gépemen, de ha jól emlékszem, akkor ez azt fogja csinálni amit kommentbe irtam :)

*/

int main()

{

char karakter;

FILE *file;

file = fopen("C:\\a\\valami.TXT","r"); /* Megnyit írásra */


if( file == NULL ){ /* C++ ban nem jo a NULL helyette sima '0'-át kell használni */

printf("Nem sikerult a fajlmegnyitas\n");

return -1;

}


while( fscanf(file,"%c",&karakter) != EOF ) /* EOF : fájlvég, szóval elvileg addig olvas amig nem talált fájlvéget */

{

if( karakter != '\n' ){ /* Minden egyéb karakter */

printf( "%c" , karakter );

}

else{ /* Ez az ág, ha sortörést talál */

printf( "\n" );

}

}


fclose(file); /* Fájllezárás */


return 0;

}

2011. dec. 11. 23:42
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:

uuuu Köszönöm!!

Nem is tudtam, hogy ilyen sok minden van benne!! :D: D

Köszi még egyszer!

2011. dec. 12. 20:05

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!