C - Как проверить, если номер введен - PullRequest
0 голосов
/ 23 ноября 2011

Как просто и правильно проверить, вводит ли пользователь число, а не символ или строку на языке Си?Я пытался написать несколько циклов, содержащих:

if (scanf("%d",&number)=1) 

, но они никогда не работают и не заканчиваются.Цикл должен заканчиваться при вводе числа.

Ответы [ 4 ]

4 голосов
/ 23 ноября 2011

Это должно быть

if (scanf("%d", &number) == 1) // Notice the two ='s, not just one

Одиночный = - это оператор присваивания, двойной == - это тест на равенство.

1 голос
/ 24 ноября 2011

Ваша строка должна быть просто: if (scanf("%d",&number)){

Если введено что-либо, кроме числа, это приведет к: if(0){ вместо if(1){

1 голос
/ 23 ноября 2011

Я думаю, вы хотите это:

for (scanf(" %d", &number); (number < -100 || number > 100); scanf(" %d", &number)) {
    printf("you didn't enter a valid number, try again >");
}
0 голосов
/ 24 ноября 2011

Соответствует ли это вашему контексту:

char ch;int g;
for(ch=getc(stdin);isalpha(ch);ch=getc(stdin))
{
printf("\nenter numbers only");
while(isalpha(getc(stdin))){}
}
ungetc(ch,stdin);
scanf("%d",&g);
printf("number entered  %d",g);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...