Чтение в положительном числе в C - PullRequest
5 голосов
/ 18 августа 2011

Я пытаюсь найти наиболее эффективный способ считывания положительного числа в C. Я не могу использовать только scanf ("% u", & var), потому что scanf принимает два отрицательных числа, тем самым запутывая число. Я также не очень хочу читать символы вручную в буфер, потому что это требует от меня заранее знать максимальное количество цифр, которое на самом деле я хочу ограничить только UINT_MAX.

Есть идеи, вещи, которые я, скорее всего, упустил из виду?

Ответы [ 2 ]

5 голосов
/ 18 августа 2011

Может быть, что-то вроде этого:

char sign = getchar();
if ('-' == sign) {
    //error
} else {
    ungetchar(sign);
    scanf("%u", &var) 
}
0 голосов
/ 18 августа 2011

Как насчет чтения signed int от пользователя, и если он отрицательный, показать пользователю ошибку:

int var;
scanf("%d", &var);

if (var < 0) {
    printf("Error: %d is negative", var);
}
else {
    /* use the positive number */
    unsigned int positive = var;
    /* ... */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...