To Jura : S timhle souhlasím: "Jen si je dobré uvědomit, jak funguje scanf - bere znaky jen po první bílý znak, mezi které patri i '\n'", ale s timhle už ne: "který přečte a pak zahodí". Já myslim, že ho nezahodí. Jak by moh potom fungovat kód dole?
To Koja : Buď nevim, co přesně chceš, nebo si to zkoušel blbě, pač mě to funguje.. Viz kód, do pole se načítaj zadaný čísla, po Entru se provede výpočet a když dáš Ctrl+D tak program skončí..
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int PocetPrvku, c, pocitadlo = 0, pole [100];
double cislo;
while ((PocetPrvku = scanf("%lf", &cislo)) != EOF)
{ /* scanf zpracovava vstup podle specifikovane konverze,
jakmile konverzi vstup neodpovida, skonci */
if (PocetPrvku == 0) // chybne zadane cislo
{ //nejaka chybova hlaska
printf("Chybny vstup\n");
return EXIT_SUCCESS;
}
pole[pocitadlo++] = cislo;
printf("obsah pole: ");
for (int i = 0; i < pocitadlo; i++)
printf("%d ", pole[i]);
printf("\n");
// neni nahodou za vstupem ktery zpacoval scanf konec radku?
if ((c = getchar()) == '\n')
{ // ANO, tak zavolame si zavolame nejakou funci..
printf("vypocet..\n");
}
}
return EXIT_SUCCESS;
}
Jinak překládáno na WinXP pomocí GCC verzi nevim (součást IDE Code::Blocks) a funguje tak jak píšu..