infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Petru Dimitriu din Septembrie 17, 2011, 14:28:57



Titlul: stdio.h
Scris de: Petru Dimitriu din Septembrie 17, 2011, 14:28:57
M-am învăţat minte să mai lucrez cu fstream după ce am luat la o problemă 60/100 din cauza încetinelii la citire. Iar acum am o problemă cu stdio. După ce citesc mai multe caractere, încerc să citesc nişte întregi şi nu îmi citeşte nimic, nici nu mută poziţia în fişier. Ce nu fac bine?

Cod:
    for (i=1;i<=m;i++)
    for (j=1;j<=n;j++)
        fscanf(in,"%c",&c);

    fscanf(in,"%d ",&i1); // nu merge


Titlul: Răspuns: stdio.h
Scris de: Cezar Mocan din Septembrie 17, 2011, 14:48:53
Incearca sa scrii asa:

fscanf(in," %c ",&c);

Adica cu spatiu inainte si dupa %c, deoarece in caz ca ai enter-uri / spatii, varianta initiala le considera caractere pentru citit, pe cand a 2-a o sa sara peste ele.


Titlul: Răspuns: stdio.h
Scris de: Popescu Silviu din Septembrie 17, 2011, 14:49:34
S-ar putea ca dupa ce citesteacele caracter sa mai fie unul pe care sa nu-l fi luat:

daca in fisier , dupa citirea caracterelor ai ceva de genu : "!! 13" atunci nu-ti va citi nimic si se va opri la '!',
sau mai rau, sa ai "\n 13"

ca sa fi sigur ca nu face asta cand citesti fa:

Cod:
 assert(fscanf(in,"%d ",&i1));

ca sa n-ai erori de compilare include assert.h

Sper ca te ajuta :D


Titlul: Răspuns: stdio.h
Scris de: Petru Dimitriu din Septembrie 17, 2011, 14:54:09
MulÅ£umesc băieÅ£i. Am rezolvat!   :ok: