teda nezahazuje ovsem nekdy si clovek musi radne prostudovat dokumentaci jak ten scanf parsuje
ty tam totiz mas chybu:
scanf("%c",&c)!= '\n'
tohle je spatna podminka viz http://www.cplusplus.com/reference/cstdio/scanf/#return
ale stejne bych pouzil getchar
som asi magor
funguje to len s tymto
while((c=getchar())!= ' ')
{
scanf("%c",&c);
putc(c, fw);
}
ked tam dam
while((c=getchar())!= '\n')
{
scanf("%c",&c);
putc(c, fw);
}
tak to len skonči a nič nerobi
už fak netušim (to tvoje urobilo to iste)
tak mi rekni co ti dela tenhle programek: http://pastebin.com/azhzTwBy
vstup: abcd efgh
vystup:
[97]a
[98]b
[99]c
[100]d
[32]
[101]e
[102]f
[103]g
[104]h
toto funguje,
ja tomu nechapem čo dam do toho tak to na to reaguje, ale ak tam dam \n tak cely cyklus akoby preskočilo (v rámci tohto programku, inde mi to ide ok)
otazka co je na vstupu terminalu (ruzne bufferujou a polykaj znaky) napis co je to za platformu -- musi bejt hodne obskurni protoze znak \n by mel fungovat multiplatforme na standardnim vstupu (neplest s ukoncenim radku v souboru (\n, \r, \r\n) to je neco jinyho ...)
// a jeste si vyzkousej vypisovat znaky v cyklu jen tak bez podminky a zjisti co to vraci na enter ...
to je jednoduchy scanf nacte volbu ale necha v bufferu \n to pak prectes getchar ve while a hned skoncis ...
takze si napis nejakou takovouhle funkci:
void discard(FILE* istream) {
char c;
while ((c = getc(istream)) != EOF && c != '\n');
}
volej ji:
discard(stdin);
ta ti vyprazdni bufferu (sezere vstup) do konce radky (vcetne) -- takze ji volej mezi tou volbou sifry a tim whilem ...
no tak existuji funkce fscanf a getc a pak scanf a getchar apod. pricemz scanf je naimplementovany pomoci fscanf a deskriptoru standardniho vstupu (interne to muze byt implementovany jinak ale na venek se to musi chovat tak jak jsem napsal) jako ty sis vytvoril fw tak ve stdio.h mas soubory stdin, stdout a stderr
mohl jsem udelat ten discard bezparametrovy a pouzit getchar jenze to by nebylo univerzalni
"to je jednoduchy scanf nacte volbu ale necha v bufferu \n to pak prectes getchar ve while a hned skoncis ...
takze si napis nejakou takovouhle funkci:"
.. no, a čo tak dať do scanfu ako riadiaci string "%d\n"