Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
FreiRock
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 9
#1

Как очистить буфер scanf() ? - C (СИ)

18.02.2016, 21:28. Просмотров 1870. Ответов 2
Метки нет (Все метки)

Мне нужно, чтобы scanf() вызывался до тех пор, пока не будет введено целое число, но происходит зацикливание.

C
1
2
3
4
while (scanf("%d", &n) != 1 )
    {
        printf("Error\nInput n: ");
    }
fflush(stdin) - не помогает
scanf( "%*[^\n]" ); - помог, но я не понимаю, как это работает.
C
1
2
3
4
5
while (scanf("%d", &n) != 1)
    {
        scanf("%*[^\n]");
        printf("Error\nInput n: ");
    }
Есть ли более простой способ очистить буфер?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2016, 21:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как очистить буфер scanf() ? (C (СИ)):

Scanf считывает enter, как символ конца строки. Как исправить? - C (СИ)
Добрый день. Пишу меню для программы в Visual Studio 2015, возникает проблема: scanf запоминает enter, как символ конца строки, и на...

Как написать функцию scanf? - C (СИ)
Как написать функцию scanf? Добавлено через 5 минут Не вызвать,а написать

Не понимаю как работает scanf - C (СИ)
Здравствуйте, вот код программы. При работе программы второй scanf пропускается. Почему так происходит? Комментарии в коде. Заранее...

Как пользоваться scanf и printf? - C (СИ)
Ребят,расскажите пожалуйста как пользоваться scanf() и printf().Какие там типы бывают. Буду очень благодарен кто как можно подробней...

Как пользоваться scanf для строк - C (СИ)
хоть убей не могу понять как пользоваться scanf для строк, запарило одни ошибки выдает... пишу: char *str; scanf("%s", str); ...

Как в программе использовать printf и scanf - C (СИ)
как в этой программе использовать printf и scanf #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; ...

2
McFair
7 / 7 / 4
Регистрация: 25.01.2016
Сообщений: 37
19.02.2016, 01:48 #2
Подойдет?
C
1
2
3
4
5
while (scanf("%d", &n) != 1 )
    {
rewind(stdin);
        printf("Error\nInput n: ");
    }
0
LaFayette
46 / 46 / 40
Регистрация: 25.11.2015
Сообщений: 139
20.02.2016, 21:36 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот держи...наверное не совсем элегантный вариант но scanf() будет выполняться пока не будет введено целое число.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
  
  float myFunc(void);
  
 int main (void)
  {
  int a;
   a = 0;
  
 while (myFunc() != 1) {
 puts("Repeat enter");
  }
  return 0;
 }
 
float myFunc (void)
 {
 float a, c;
 int b;
 
 scanf("%f", &a);
 b = a;
 if ((c = (b / a)) > 0)
 return c;
 else
  return 0;
  }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2016, 21:36
Привет! Вот еще темы с ответами:

как ввести через scanf следующее 5i + 3 - C (СИ)
Нужно перемножить два комплексных числа. По условию задания нужно одним числом разом ввести &quot;5i + 3&quot;, а вторым числом 2i + 4. Причем я...

Как считать одним scanf сразу и символ и число? - C (СИ)
Как мне заставить scanf принять одно число (типо float), и символ(char). scanf(&quot;%f %c&quot;,numerial,FirstChoiceTemp); Число я отправляю в...

Как заставить scanf() игнорировать символ конца строки? - C (СИ)
При вызове функции scanf() автоматически происходит запись символа '\n' на стандартное ус-во. Как можно избежать этого не прибегая к...

Как сделать функцию без printf или scanf - C (СИ)
Как сделать функцию для такого кода, но чтоб в функции не было printf'а или scanf'a? #include &lt;stdio.h&gt; int main() { int x; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru