Problém s ukončením načítania znakov do poľa - C

C,C++,C#

Moderátori: psichac, Moderátori

alvar
Nový člen
Nový člen
Príspevky: 58
Dátum registrácie: 16 Sep 2014, 17:25

Problém s ukončením načítania znakov do poľa - C

Príspevok od používateľa alvar » 17 Nov 2017, 19:34

Čaute, viete mi poradiť, ako mám správne ukončiť načítavanie hodnôt do poľa "input"? Načítavanie sa ukončí vtedy, ak pri čítaní vstupu program narazí na hodnotu 0 alebo dôjde k ukončeniu štandardného vstupu (načíta sa hodnota EOF napr. stlačením klávesovej skratky Ctrl+d). Pole je typu float. Díky moc!

Kód: Vybrať všetko

float input[500];
float number;
int i = 0;

while(scanf("%f", &number) == 1){
            if(number != 0 && number != '\n' && number != EOF){
                i++;
                input[i] = number;
            }
            else {
                break;
            }
}
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Problém s ukončením načítania znakov do poľa - C

Príspevok od používateľa peterple » 17 Nov 2017, 21:28

Predpoklad že number bude niekedy obsahovať '\n' alebo EOF je chybný. LineFeed je pre scanf biely znak takže ho považuje za oddeľovač ako je napr. medzera. EOF funkcia scan vracia ako výsledok volania. A tú si ty nikam neukladáš, iba ju porovnávaš či bola jedna. Teda že scan naplnil jeden parameter.
Zadanie do školy?
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok