Blad po scanff, pętla nieskonczona

Odpowiedz Nowy wątek
2015-01-04 16:45
0

Witam! Mam problem z kodem:

 char * tab = (char *) malloc(10);
        printf("Podaj \n");
        scanf("%9s", tab);
 
        printf("Podano: %s ", tab);
 
        int k;
        scanf("%d", &k);
        while(k < 10 || k > 50)
        {
            printf(" Podaj Poprawna wartosc: ");
            scanf("%d", &k);
        }
 
        printf("Podano: %d",k);
        int p = k;

gdy odpalam to w konsoli i wpisze do 10 znaków to jest ok, ale gdy wpisze ponad 10 znaków ( a wlasnie na to chcialem się zabezpieczyć dając w scanf przy procencie 9) to ciągle wypisuje mi z pętli podaj poprawną wartość. Co należy zrobić, żeby to działało poprawnie, głownie chodzi mi o to ze jak użytkownik poda więcej niż 10 znaków to program bierze 10 i działa dalej.

Pozostało 580 znaków

2015-01-04 16:53
1

Może tak:

 
    char * tab = (char *) malloc(10);
    printf("Podaj \n");
    scanf("%9s", tab);
    while(getchar() != '\n')
        continue;
 
    printf("Podano: %s \n", tab);
 
    int k;
    scanf("%d", &k);
    while(k < 10 || k > 50)
    {
        printf(" Podaj Poprawna wartosc: ");
        scanf("%d", &k);
    }
 
    printf("Podano: %d",k);
    int p = k;
edytowany 1x, ostatnio: KazikWielki, 2015-01-04 16:54

Pozostało 580 znaków

2015-01-04 17:12
0

No niby działa, ale czemu jeśli dam niżej:

 
char color;
scanf("%c", &color);
    while(color != 'b')
    {
        printf("Podano: %c \nPodaj swoj ranking, (1-100): ", color);        
        scanf("%c", &color);                    
    }

to nawet jak podam 'a' to przerywa pętlę ?(pisze to w c)

Pozostało 580 znaków

2015-01-04 17:15

scanf(" %c", &color); albo dodatkowa pętla od @KazikWielki


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
co daje ten odstęp? bo działa...? - andrzejbodziuzbychujarek 2015-01-04 17:20

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0