Vajíčková mánie Vajíčková mánie
Od 15. do 21.4. slevy 20 až 80% v sekci C/C++. Když ne teď, tak kdy?
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde
Avatar
Kubas129
Člen
Avatar
Kubas129:24.11.2018 19:42

Proč, když napíšu třeba: Ahoj světe!
Tak proč se cyklus neukončí ale pokračuje dál?? Vždyt přece poslení hodnota má být ta E0F

int main() {
        int znak;
        do {
                znak = getchar();
        } while (znak!= EOF);
        return 0;
}
 
Odpovědět 24.11.2018 19:42
Avatar
Kubas129
Člen
Avatar
Kubas129:24.11.2018 20:17

Jak načtu celý řádek?

 
Nahoru Odpovědět 24.11.2018 20:17
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Kubas129
DarkCoder:24.11.2018 23:03

EOF je makro jehož hodnota je obvykle definovaná jako -1 a indikuje, zda-li došlo na konec souboru. Pro indikaci konce řádku se používá '\n'.

Načtení řádku můžeš provést následovně:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#define MAX 100

int main(void) {
        char text[MAX];
        int pos = 0;

        while (pos < (MAX - 1)) {
                text[pos] = getchar();
                if (text[pos] == '\n') break;
                pos++;
        }
        text[pos] = '\0';

        puts(text);

        return 0;
}

Popřípadě můžeš použít funkci fgets().

fgets(text, sizeof(text), stdin);
Nahoru Odpovědět  +1 24.11.2018 23:03
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.