fscanf problem
Juraj Hilovsky
hilovsky na unipo.sk
Středa Květen 31 07:21:17 CEST 2000
Tiez som mal ten problem, vyriesil som to tak, ze som si vytvoril funkciu na
citanie vstupu zo suboru, ktora to robi tak, ako chcem ja:
void CitajVetu(FILE* in1, char* b)
{
int a,i;
i=0;
while(1)
{
a=getc(in1);
if(a==0xa || feof(in1)) break;
if(a==0xd) {getc(in1);break;}
b[i]=a;
i++;
}
b[i]=0;
}
Veta moze byt ukoncena znakom LF (0xa), alebo dvojicou CR+LF (0xd, 0xa).
Samozrejme, da sa to este vylepsit (aj to urobim).
------
Este k funkcii fscanf;
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.
V Linuxe je asi zbytocne hladat pre tuto funkciu vhodny zapis formatovacieho
retazca (takisto napr. aj v Solarise). Trapil som sa s tym dost a dosiel som
k zaveru, ze bude treba upravit zdrojak fscanf ( ale to nechavam na lepsich
odbornikov ako som ja ).
To je k tomuto problemu zatial vsetko.
Ing. Juraj Hilovsky
spravca serverov CVT PU
Presov
Slovakia
-----Původní zpráva-----
Od: Radek_Sedmak na eurotel.cz <Radek_Sedmak na eurotel.cz>
Komu: linux na linux.cz <linux na linux.cz>
Datum: 30. máj 2000 20:54
Předmět: fscanf problem
>Ahoj All,
>
> asi jsem uplne tupej a tak se zeptam. Kdyz pouziju
>fscanf(stream,"%[^\n]%*[\n]",buffer) tak mi to nacte jeden radek ze streamu
do
>vystupniho bufferu, ale problem je co kdyz je ve vstupnim streamu jenom \n,
>protoze zapis %[^\n] rika cti dokud neni \n, coz mi samozrejme zustane stat
na
>miste v pripade ze vstup je pouze \n. Proto bych potreboval zapis cti dokud
neni
>\n vcetne onoho \n. Netusite nekdo please jak to zapsat do formatovaciho
retezce
>?
>
>
>
>Bye Sam
Další informace o konferenci Linux