С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/170: Рейтинг темы: голосов - 170, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 9
1

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

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

Author24 — интернет-сервис помощи студентам
Мне нужно, чтобы 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: ");
    }
Есть ли более простой способ очистить буфер?
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2016, 21:28
Ответы с готовыми решениями:

Как очистить буфер..?
Извините, за вопрос из облатси VBA, но там в конфе глухо, да и проблема не только VBA'шная... ...

Как очистить буфер com-порта?
В этой программе я считываю данные с lpt-порта и в зависимости от полученных значений, посылаю...

Как очистить буфер обмена?
вот собственно и весь вопрос Заранее спасибо

Как очистить буфер клавиатуры?
Есть меню в котором я двигаю стрелочку кнопками вверх и вниз и нажимаю ентер. while (true) {...

2
9 / 9 / 7
Регистрация: 25.01.2016
Сообщений: 39
19.02.2016, 01:48 2
Подойдет?
C
1
2
3
4
5
while (scanf("%d", &n) != 1 )
    {
rewind(stdin);
        printf("Error\nInput n: ");
    }
2
48 / 48 / 57
Регистрация: 25.11.2015
Сообщений: 140
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
20.02.2016, 21:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2016, 21:36
Помогаю со студенческими работами здесь

Как программно очистить буфер обмена
using System.Runtime.InteropServices; public static extern int...

Как очистить буфер обмена (clipboard)?
сабж, собственно

Как из макроса Excel очистить буфер обмена?
Как из макроса Excel очистить буфер обмена?

Как очистить буфер обмена в Access 2003
Вот тут встал еще один вопрос: Мне при нажатии на кнопку нужно очищать буфер обмена. Смотрю,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru