Scanf не считывает пустые строки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Уже создавал подобные темы но решения нет. I Считываю строки с клавиатуры. Всё бы ок. Но scanf не считывает пустые строки (обязательно требует non whitespace символы), также читает до первого whitespace символа. Т.е. слово считаем, а предложение нет. Из-за этого присматриваюсь к fgets/gets. Но с ними какая-то фигня. Они видимо считывают \n из предыдущих printfov как getchar (писал уже). И прога проскакивает считывание, вводя \n. Ставить перед каждым gets fflush(stdin) не хочется ни разу. Почему так чудят эти функции. Как сделать нормальный ввод с клавиатуры строки (считывание до символа \n). II Пытаюсь разобраться с debug в ms visual studio 2010. Переменные он видит, но вот потоки stdin и stdout я не могу найти. Хотя есть специальная вкладка "потоки" (при дебаге). III Также с помощью scanf как-то неправильно считываются русские буквы. Подключаю #include <clocale> и в main пишу setlocale(LC_ALL,"Russian"); . Но вместо ююююююю он видит ооооооооо .

Решение задачи: «Scanf не считывает пустые строки»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
char* RemoveEoln(char* text)
{
    size_t last = strlen(text) - 1;
    if (text[last] == '\n')
    {
        text[last] = 0;
    }
 
    return text;
}
 
int main()
{
    char buff[128] = {0};
 
    fgets(buff, sizeof(buff), stdin);
 
    printf("[%s]", RemoveEoln(buff));
 
    return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы и .
  2. Определяется функция RemoveEoln, которая принимает в качестве аргумента указатель на строку и возвращает указатель на эту же строку, но без завершающего символа новой строки, если он присутствует.
  3. В функции main создается буферный массив buff определённого размера.
  4. В этот массив считывается строка с помощью функции fgets.
  5. В цикле while выводится на экран содержимое массива buff, при этом с помощью функции RemoveEoln удаляется символ новой строки, если он присутствует.
  6. Завершается выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы