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

Fgets вместе с scanf не работает

01.02.2019, 21:53. Показов 5515. Ответов 1

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Я начинающий C программист. При создании своего файлового менеджера, я столкнулся с такой проблемой: после scanf не работает функция fgets.Предполагаю, что это связано с буфером, не представляю, как его отчистить. Как решить эту проблему?

main.c
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "alter.h"
#include "alter_add_rewrite.h"
 
int main(int argc, char **argv)
{
    char text[65] = "";
    char mode[2];
    char *fileWay;
    char inpParam; //эта переменная предназначена для того, что хранить короткий параметр переданный пользователем
 
    while ((inpParam = getopt(argc, argv, "a:")) != EOF)
    {
        fileWay = optarg;
        switch (inpParam)
        {
        case 'a':
            puts("Пожалуйста, введите, как вы будете редактировать файл:");
            puts("\t1)Режим quick-add (a)");
            puts("\t2)Режим quick-rewrite (w)");
            puts("\t3)Обычный режим балкнота (n)");
                scanf("%1s", mode);
 
            if (strstr(mode, "a") || strstr(mode, "w"))
            {
                quickFileAlter(fileWay, mode);
            }
             else if (strstr(mode,  "n"))
                fileAlter(fileWay);
            else
            {
                puts("Неопознаный режим!");
                return 20;
            }
            break;
        default:
            puts("Неопознанный параметр !!!");
            return 15;
        }
    }
    return 0;
}
alter_add_rewrite.h
C
1
2
3
4
5
6
7
8
9
10
11
void quickFileAlter(char *way, char *param)
{
    char text[4097];
    
    FILE *altf = fopen(way, param);
    printf("Пожалуйста, введите текст:\n");
    fgets(text, 4096, stdin);
    fputs(text, altf);
    printf("Файл изменен\n");
    fclose(altf);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2019, 21:53
Ответы с готовыми решениями:

Пользовательский ввод scanf() vs fgets()
Выполняю упражнение: поиск подстроки в строке. Почему программа не работает с функцией fgets() ?...

Конфликт fgets/gets_s с scanf, или снова про очистку буфера
Если функцию f1 запускать до scanf все работает корректно, если после то ввод строки не происходит....

Fgets() читает строку вместе с символом '\n'
Здравствуйте. Есть некая функция, которая получает на вход файл вот такого типа: слово1 слово2...

Компилятор как будто не видит scanf, а fgets выполняет перед printf, хотя расстановка абсолютно другая
В-общем, тема такая: читаю учебник, написано создать прогу для поиска текста в массиве строк....

1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37438 / 20809 / 4281
Регистрация: 12.02.2012
Сообщений: 34,227
Записей в блоге: 14
02.02.2019, 12:31 2
сюда
0
02.02.2019, 12:31
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2019, 12:31
Помогаю со студенческими работами здесь

Переделаем вместе scanf() в cin>>
Был исходник: void Comp::Get() // Ввод данных с клавиатуры =) { printf (&quot;\n Введите...

Не работает fgets
Код еще не написан, но появилась какая-то проблема...ЧТо я делаю не так? #include &lt;stdio.h&gt;...

не корректно работает fgets()
здравствуйте, пишу код для удаления строки из файла(файл c именем fname с данными), проблема с...

Как работает функция fgets()?
Здравствуйте, такая проблема пытаюсь разобрать как работает функция fgets() как я понимаю она...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Что такое хорошо и что такое плохо, вид сбоку. Индивид и общество - грань не нарушения.
Hrethgir 18.01.2025
В моей личной жизни и времени, я рассуждаю категорией "хуже-лучше", в том плане, когда меня спросили например - "а зачем ты делаешь свой процессор?", то я ответил - "чтобы сделать свою жизнь лучше". . .
Передача по ссылке или по значению в Java?
InfoMaster 18.01.2025
В мире программирования на Java одним из ключевых аспектов, требующих глубокого понимания, является механизм передачи параметров в методы. Этот фундаментальный концепт часто становится источником. . .
Тернарный условный оператор в Python
InfoMaster 18.01.2025
В мире программирования существует множество инструментов и конструкций, позволяющих создавать эффективный и лаконичный код. Одним из таких инструментов является тернарный условный оператор, который. . .
Как удалить неотслеживаемые файлы из рабочего дерева Git
InfoMaster 18.01.2025
В процессе разработки программного обеспечения с использованием системы контроля версий Git часто возникает необходимость в управлении неотслеживаемыми файлами. Неотслеживаемые файлы (untracked. . .
Что делает код if __name__ == "__main__": в Python
InfoMaster 18.01.2025
В мире программирования на Python существует множество важных концепций, и одной из наиболее интересных является конструкция if __name__ == "__main__". Эта специальная конструкция играет ключевую. . .
Как заставить Git забыть об отслеживаемом файле, добавленном в .gitignore
InfoMaster 18.01.2025
В мире разработки программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, позволяя эффективно отслеживать изменения в коде и управлять ими. Однако. . .
Что означает use strict в JavaScript и для чего используется
InfoMaster 18.01.2025
В мире современной веб-разработки JavaScript играет ключевую роль как один из основных языков программирования. По мере его эволюции возникла необходимость в механизмах, которые помогли бы. . .
Как работать со скрытыми (hidden) элементами в jQuery
InfoMaster 18.01.2025
В современной веб-разработке управление видимостью элементов на странице является одним из ключевых аспектов создания интерактивных пользовательских интерфейсов. jQuery предоставляет мощный набор. . .
Как переключаться между ветками (Branch) с помощью checkout в Git
InfoMaster 18.01.2025
Ветки в Git являются одной из ключевых концепций для управления версионностью кода, позволяя разработчикам эффективно работать в команде и параллельно развивать программные проекты. Каждый новый. . .
Что такое стек и куча, чем они отличаются и где находятся
InfoMaster 18.01.2025
Понимание основных концепций памяти в программировании В мире современного программирования эффективное управление памятью играет ключевую роль в создании производительных и надежных приложений. . . .
Как использовать комментарии в JSON
InfoMaster 18.01.2025
JSON (JavaScript Object Notation) представляет собой легкий и широко используемый формат обмена данными, который стал стандартом де-факто для веб-приложений и программных интерфейсов. При работе с. . .
Как заставить git pull перезаписать локальные файлы в Git
InfoMaster 18.01.2025
Проблема перезаписи локальных файлов в Git При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо синхронизировать локальный репозиторий с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru