Кстати, я использую Windows и IDE CodeBlocks.
Если мой код был (имеет пробел перед спецификатором %d
):
#include <stdio.h>
int main(void)
{
int num;
printf("Enter a number you want to check is present: ");
while(scanf(" %d",&num)==EOF) // As long as wrong input is present on buffer
{
printf("Please enter valid input...\n");
//clear the input buffer
}
return 0;
}
У меня есть необходимо набрать Ctrl+Z
дважды (один раз в каждой строке, не обязательно находиться в начале строки) для запуска дела while(scanf(" %d",&num)==EOF)
.
Принимая во внимание, что если мой код был: Если мой код был (без пробела до спецификатора %d
):
#include <stdio.h>
int main(void)
{
int num;
printf("Enter a number you want to check is present: ");
while(scanf("%d",&num)==EOF) // As long as wrong input is present on buffer
{
printf("Please enter valid input...\n");
//clear the input buffer
}
return 0;
}
Мне нужно один раз набрать Ctrl+Z
, чтобы запустить while(scanf("%d",&num)==EOF)
.
Итак, есть 2 части в этом вопросе:
1) Почему мне нужно дважды нажать Ctrl+Z
для первого примера? Я попытался сослаться на { ссылка }, но это было для UNIX и немного сбило меня с толку
2) Почему пробел перед спецификатором %d
даже вызывает такое расхождение так как это не должно иметь значения, если только это %n
, %c
или %[...]
(я получил это от { ссылка })?
ПРИМЕЧАНИЕ: если я должен опубликовать эти 2 разделяйте как 2 вопроса, пожалуйста, оставьте комментарий.
Обновление : я пробовал это в приглашении cmd с g cc (мой первый раз в приглашении cmd), та же проблема сохраняется