fscanf problem
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Středa Květen 31 11:15:51 CEST 2000
On Wed, 31 May 2000, Juraj Hilovsky wrote:
> Zaujimava je nasledujuca vec:
> zapis fscanf(stream,"%[^\n]%*c",buffer); v linuxe nacita sice ten prazdny
> riadok, ale zostane na nom a cita ho az do zblbnutia (ak je v cykle).
> V systeme MS-DOS tato funkcia pracuje korektne. To znamena, ze ked je v
> riadku iba '\n', nacita prazdny retazec a pokracuje dalej.
Ne, je to presne naopak. V tom DOSu (coz asi znamena prelozeno urcitym
konkretnim DOSovym kompilatorem a slinkovano s konkretnimi knohovnami) je
to spatne a v Linuxu je to dobre, protoze:
[ Matches a **nonempty** sequence of characters from the
specified set of accepted characters; the next
...
cili vzorkem ``%[^\n]%*c'' nelze nacist ``\n'' a funkce fscanf v takovem
pripade vrati 0 a precteny (ale nevyhovujici) znak (tj. '\n') vrati pomoci
ungetc() na vstup.
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux