gdzies w pliku tekstowym jest zdanie
science fiction przygodowy
ustawiam wskaznik funkcja fseek na poczatek tego zdania
i jak pozniej funkcja fscanf odczytac tylko fiction przygodowy ,zeby ominal mi sciecne
gdzies w pliku tekstowym jest zdanie
science fiction przygodowy
ustawiam wskaznik funkcja fseek na poczatek tego zdania
i jak pozniej funkcja fscanf odczytac tylko fiction przygodowy ,zeby ominal mi sciecne
imho:
fscanf( f, "science %s %s\n", a, b );
;> ale nie nazwe tego najwygodniejszym sposobem
jesli chesz po prostu dwa slowa ostatnie, to odczytaj 3, a 1dnego po prostu nie uzywaj ;>
fscanf(f,"%s\n",a) odczytuje tylko do spacji:(
mam maly problem
jest plik textowy ktory wyglada nastepujaca:
Nazwa filmu: "nazwa1"
jakas tresc ciagnaca sie przez kilka linijek
.....
.....
......
.....
Nazwa filmu:"nazwa2"
......
......
.....
i tak dalej
czy za pomoca funkcji fscanf mozna odczytac tylko nazwy filmu i nazwy wyswietlic na ekran za pomoca printf??bo ja
uruchamialem funkcje fscanf (f,"Nazwa filmu :%[^ \n],object.nazwa) odczytala mi tylko pierwsza linijke pliku txt a jezeli ja znowu uruchomilem to znowu pierwsza linijke tak jakby wskaznik sie nie przesuwal .Jak to zrobic by funkcja szukala textu Nazwa filmu : a pozniej po tym tekscie wpisywala do bufora nazwe filmu ,pozniej te nazwy filmu maja byc wyswietlone na ekran.Dzieki za odpowiedzi.
No trzeba bylo tak Od razu ;>>>
imho:
zakladam ze format jest strikte taki
Nazwa filmu:(TU SPACJA)"nazwa filmu jakas"(TU ENTER)
FILE *f;
char buf[ 256 ];
char *nz = "Nazwa filmu: "; // tutaj to cudo ktorego szukamy
char *n, *x;
f = fopen( "siakis.plik", "r" );
while( fgets(f, buf, 256) )
{
if( memcmp( nz, buf, sizeof( nz )-1 ) == 0 )
{
n = buf + sizeof( nz )+1; // pierwsza litera nazwy
x = strchr( n, '"' ); //znajdz cudzyslow
if( x ) *x = '\0'; // pozbadz sie go i dorzuc EOS
puts( n ); // wypisz nazwe na ekran
}
}
...
nie testowalem ale powinno dzialac ;>