Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
FreiRock
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 9
#1

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

18.02.2016, 21:28. Просмотров 2183. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2016, 21:28
Ответы с готовыми решениями:

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

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

Не понимаю как работает scanf
Здравствуйте, вот код программы. При работе программы второй scanf...

Как пользоваться scanf и printf?
Ребят,расскажите пожалуйста как пользоваться scanf() и printf().Какие там типы...

Как в программе использовать printf и scanf
как в этой программе использовать printf и scanf #include "stdafx.h"...

2
McFair
7 / 7 / 7
Регистрация: 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 / 57
Регистрация: 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 для строк
хоть убей не могу понять как пользоваться scanf для строк, запарило одни ошибки...

как ввести через scanf следующее 5i + 3
Нужно перемножить два комплексных числа. По условию задания нужно одним числом...

Как считать числовой код через scanf?
Допустим у нас есть числовой код 17-23-10 что нужно записать в scanf?


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

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

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