Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C - buffer problem s nacitanim z klavesnice

Ahoj mam maly problem program facha jak ma jeho podstatou je ze uzivatel si zvoli koncove hranice cisiel potom svoje cislo zada a ak bude splnat poziadavky teda nebude presahovat hranice a nebude sa v nom nachadzat iny znak ako cislo tak sa program ukonci dovtedy ale bude furt dokola cisla zadavat. Problem je v tom ze po kazdom novom zadani znaku musi uzivatel stlacit viac enterov

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "KontrolaCiselnehoVstupu.h"

int main()
{
    int min;
    int max;

    printf("Zadaj dolnu hranicu: ");
    scanf("%d",&min);
    printf("Zadaj hornu hranicu: ");
    scanf("%d",&max);
    printf("Poziadavka: cele cislo od %d po %d\n",min,max);
    while(getInt(min,max)==0);
    return 0;
}

int getInt(int min,int max)
{
    const int POCET=10;
    int kolkoKratAlokoval=1;
    int pocetPrvkov=0;
    int cislo;
    char znak;
    char *chybnyZnak;
    char *cisla=(char *)malloc(POCET*sizeof(char));

    printf("Vstup: ");
    while(getchar()!='\n');
    while((znak=getc(stdin))!='\n')
    {
        ++pocetPrvkov;
        if(pocetPrvkov%POCET==(POCET-1))
        {
            ++kolkoKratAlokoval;
            if((cisla=(char *)realloc(cisla,POCET*kolkoKratAlokoval*sizeof(cha r)))==NULL)
            {
                printf("Chyba realokacie");
                return 1;
            }
        }
        *(cisla+pocetPrvkov-1)=znak;
    }
    *(cisla+pocetPrvkov)='\0';
    cislo=strtol(cisla,&chybnyZnak,10);
    if(*chybnyZnak!='\0')
    {
        printf("Vystup: Zadane cislo obsahuje nepovoleny znak \"%c\". Zadaj cislo znovu!\n",*chybnyZnak);

        if(cislo<min && cislo>max)
        {
            printf("Vystup: Zadane cislo je mimo povoleneho rozsahu. Zadaj cislo znovu!\n");
        }
        return 0;
    }

    if(*chybnyZnak=='\0')
    {
        if(cislo>=min && cislo<=max)
        {
            return 1;
        }

        else
        {
            printf("Vystup: Zadane cislo je mimo povoleneho rozsahu. Zadaj cislo znovu!\n");
            return 0;
        }
    }
    return 0;
}

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny