Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 4.672 pregleda

Najnovija ↓

kako da ucitam citavu liniju iz dat. sa fscanf? 06.03.2006. u 23:12 · pre 251 mesec #1
ne znam kako da u c-u ucitam cijelu liniju iz datoteke zajedno sa svim karakterima i razmacima uz pomoc fscanf. sta bih trebao dodati kodu, i dal je to uopste moguce uz pomoc ove funkcije??


main()
{
FILE *ulaz;
char buffer[300];

fscanf(ulaz,"%s",buffer);
}
Re: kako da ucitam citavu liniju iz dat. sa fscanf? 07.03.2006. u 00:14 · pre 251 mesec
izmenjeno 1 put, poslednji put Marko Stankovic 07.03.2006. u 00:23
  1. Marko Stankovic07.03.2006. u 00:23zapis iz teksta poruke
#2
Mozes recimo ovako:

Code:

FILE *ulaz;
char buffer[300];
char c;
int i=0;

while((c=fgetc(ulaz))!='\n') buffer[i++]=c;
buffer[i]='\0';



ili mozes da koristis fgets() funkciju, mada cini mi se da ona dodaje i '\n' u string... A mozda i gresim.


update
tek sam sada video da trazis bas pomocu fscanf funkcije. Iskreno trenutno mi ne pada na pamet kako bi to moglo da se odradi, jer kada koristis %s on cita string do prvog belog znaka. Tako da ako nije neophodno da koristis fscanf onda citaj na nacin koji sam opisao iznad.

poz
Potpis
I drink to make other people interesting.
Re: kako da ucitam citavu liniju iz dat. sa fscanf? 07.03.2006. u 02:36 · pre 251 mesec #3
Hvala ti.Na tvoj nacin sam rijesio ovaj problem, vrlo je jednostavan. Ipak volio bih znati da li se nekako mogu izbjeci whitespace sa fscanf-om, pa ako neko uspije naci rjesenje nek mi javi!

pozdrav!



Re: kako da ucitam citavu liniju iz dat. sa fscanf? 07.03.2006. u 04:37 · pre 251 mesec #4
bas izricito sa "fscanf()" funkcijom bi to izgledalo nekako ovako mada nema smisla jedino ako ti zadatak izricito nalaze tako, a ako ne onda fino koristi "getc()" kako je covijek naveo i to je to !


Code:

main()
{

FILE *fp;
int i=0;
char c, buf[300];

fp=fopen("imedat", "r");

while((fscanf(fp,"%c",&c))!='\n')
{
buf[i]=c;
i++;
}

}
Potpis
Poslije spavanja treba odmorit ! ! !
Re: kako da ucitam citavu liniju iz dat. sa fscanf? 07.03.2006. u 13:25 · pre 251 mesec
izmenjeno 1 put, poslednji put fearless 07.03.2006. u 13:26
  1. fearless07.03.2006. u 13:26zapis iz teksta poruke
#5
Citat:
ili mozes da koristis fgets() funkciju, mada cini mi se da ona dodaje i '\n' u string

Sto se lako moze i resiti ako bas hoces nju ;). Npr:

Code:

/* zbog fgets-ovog newline upisivanja */
for(i = 0; i < strlen(string); i++) {
      if(string[i] == '\n' || string[i] == '\r') break; }
string[i] = '\0';
Potpis
Phearless - Serbian/Croatian Security Magazine: www.phearless.org
Re: kako da ucitam citavu liniju iz dat. sa fscanf? 07.03.2006. u 15:54 · pre 251 mesec #7
Citat:
fearless: Sto se lako moze i resiti ako bas hoces nju ;). Npr:

Code:

/* zbog fgets-ovog newline upisivanja */
for(i = 0; i < strlen(string); i++) {
      if(string[i] == '\n' || string[i] == '\r') break; }
string[i] = '\0';



Naravno da se to lako resava :) Nisam mislio da je komplikovano vec je stvar sto funkcija fgets radi na nacin koji sam ja napisao, odnosno poziva fgetc() dok ne dodje do '\n', pa cisto da covek ima predstavu kako se to radi na neki "sirov" nacin.


@zokio

mislim da taj nacin ne radi jer fscanf ne vraca kod procitanog znaka vec vraca broj procitanih znakova, tako da bi ta petlja uvek bila true.
Potpis
I drink to make other people interesting.
Re: kako da ucitam citavu liniju iz dat. sa fscanf? 08.03.2006. u 16:10 · pre 251 mesec #8
Code:

fscanf (f, "%[^\n]\n", buffer); // cita sve do kraja reda, i upisuje u buffer a zatim procita i znak za novi red (\n) ali ga nigde nece sacuvati

fscanf (f, " %[^\n]\n", buffer); // preskace vodece whitespace i cita sve do kraja reda, i upisuje u buffer a zatim procita i znak za novi red (\n) ali ga nigde nece sacuvati


yooyo
Re: kako da ucitam citavu liniju iz dat. sa fscanf? 08.03.2006. u 22:22 · pre 251 mesec #11
Citat:

@zokio

mislim da taj nacin ne radi jer fscanf ne vraca kod procitanog znaka vec vraca broj procitanih znakova, tako da bi ta petlja uvek bila true.


Da u pravu si fscanf() funkcija je korisna u onom mom navedenom kodu samo ako se koristi ovako

Code:


#include<stdio.h>

main()
{

FILE *fp;
int j,i=0;
char c, buf[300];

fp=fopen("imedat.txt", "r");

while((fscanf(fp,"%c",&c))!=EOF)
{
    //printf("%c",c); -ako bas hoces da ti prvo pohranjuje u buffer
buf[i]=c;
i++;
}

for(j=0;j<i;j++)
printf("%c",buf[j]);

}



evo cijelog koda uz pomoc fscanf do kraja datoteke to radi





,a za novi red treba malo razmislit, javim se...
Potpis
Poslije spavanja treba odmorit ! ! !
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme