fscanf problem

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Úterý Květen 30 21:20:07 CEST 2000


On Tue, 30 May 2000 Radek_Sedmak na eurotel.cz wrote:

>      asi jsem uplne tupej a tak se zeptam. Kdyz pouziju>
> fscanf(stream,"%[^\n]%*[\n]",buffer) tak mi to nacte jeden radek ze

Misto %*[\n] by IMHO stacilo \n.

> 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.

Ja mam s %[...] takovou zkusenost, ze odmita obecne cist v pripade, ze by
vysledkem byl prazdny retezec (napr. xx nevyhovuje vzorku x%[^x]x). Ja
bych mozna udelal toto

  if ((c = getchar()) == '\n')
    prazdny_radek();
  else {
    ungetc(c);
    scanf(...);
  }

> Proto bych potreboval zapis cti dokud neni \n vcetne onoho \n.
> Netusite nekdo please jak to zapsat do formatovaciho retezce ?

Jestli chcete ten konec radku zapsat i do bufferu, pak asi jedine
nakonec provest neco na zpusob strcat(buffer, "\n").

Nebo v tomto konkretnim pripade rovnou pouzit fgets misto fscanf.

--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