Tylko liczby

0

Witam
Moze moje pytanie bedzie smieszne ale jestem poczatkujacy wiec zapytam :)

Potrzebuje napisac akie cos (bedzie to chyba petla) aby funkcja scanf nie przyjmowala znakow klawiatury tylko same liczby.
Przyklad:

printf("Podaj liczbe a:");
scanf("%d",&a);

Chcial bym aby funkcja dzialal tak dlugo az z klawiatury nie zostanie podana liczba.

0

I sposób:

    int zmienna;
    char tmp[11];
    scanf("%10[0123456789-]", tmp);
    zmienna = atoi(tmp);

II sposób:

    int zmienna, i = 0;
    const int n = 11;
    char tmp[n], znak;
    ZeroMemory(tmp, sizeof tmp);
    
    do
    {

        znak = getch();
                
        if(isdigit(znak) || znak == '-')
        {
                tmp[i] = znak;
                printf("%c", znak);
                i++;
        }
        else if(znak == 8)
        {
                printf("%c %c", znak, znak);
                tmp[--i] = '\n';
        }
        else
                break;
    }while(znak != '\n');
    zmienna = atoi(tmp);
0

W II sposobie jest mozliwosc przepelnienia bufora.

0

chyba nie ma problemu wstawić if(i != n-1)

0

chyba nie ma problemu wstawić if(i != n-1)

Pewnie, ze nie ma. :-)

0

chyba nie ma problemu wstawić if(i != n-1)

Pewnie, ze nie ma. :-)

Tym bardziej, że powinno być if (i < n-1) na końcu:
while(znak != '\n' && i<n-1);

0

chyba nie ma problemu wstawić if(i != n-1)

Pewnie, ze nie ma. :-)

Tym bardziej, że powinno być if (i < n-1) na końcu:
while(znak != '\n' && i<n-1);

no nie do konca... w ten sposob moze nastapic wyjscie z petli zanim wcisnie sie enter, a to nie koniecznie jest dobre

0

Dzieki za pomoc. :)

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