Каждый пункт меню ввести в отдельную функцию - C (СИ)

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

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

К исходнику реализовать меню из 5 пунктов: 1)Открыть указанный файл для обработки 2)Обработать введенные данные (обработка программой введенного текста) 3)Сохранить в файл результат пункта 2. 4)Вывести результат обработки пункта 1 на экран. 5)Выход из программы. Каждый пункт меню ввести в отдельную функцию.
#include <stdio.h>
#include <string.h>
int main()
{
    FILE *file1, *file2;
    char fname[256];
    int ch;
    printf ("Enter the filename to be copied:\n");
    fgets (fname, sizeof (fname), stdin); //со стандартного потока stdin (клавиатура) считывается имя файла который надо модифицировать
 
    if (fname[strlen(fname) - 1] ='\n')
    fname[strlen(fname) - 1] = 0; //тут мы приводим в порядок строку с именем файла чтобы в дальнейшем проверить ее
    file1 = fopen (fname,"r+"); //открываем исходный файл для чтения
 
    if (!file1){
        printf ("Can't find this file %s\n",fname);
        return 0; //если нет такого файла программа завершается
    }
 
    file2 = fopen ("output.txt","w+"); //открываем (создаем если не существует) модифицированный файл output.txt для правки
 
    if (!file2){
        printf ("Can't create new file! Write Error\n");
        fclose (file1);
        return 0; //если создать невозможно то программа завершается
    }
    while ((ch = getc(file1))!=EOF) //начинаем цикл: пока считанный символ не является признаком конца файла продолжаем
    {
        switch (ch){
        case ' ': putc ('\t', file2);
        break; //если считываемый символ пробел, записываем в файл табуляцию
 
        case '\t': putc (' ',file2);
        break; //если символ табуляции - записываем пробел
 
        default:  putc (ch, file2);
        break; //если любой другой символ, оставляем все без изменения
        }
    }
 
    fclose(file1);
    fclose(file2); //окончание работы с двумя файлами
}

Решение задачи: «Каждый пункт меню ввести в отдельную функцию»

textual
Листинг программы
void display()
{
    FILE *fp;
    char th;
 
  if((fp=fopen("test.txt", "r"))==NULL) {
    printf("Can't open the file.\n");
    exit(1);
  }
 
  while((th=getc(fp))!=EOF) {
    putc(th, stdout);
  }
  fclose(fp);
 
  return 0;
}

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

В данном коде выполняется следующие действия:

  1. Открывается файл test.txt для чтения с помощью функции fopen.
  2. Получается указатель на файл fp.
  3. Если файл не открылся (присваиваемое значение NULL), то выводится сообщение об ошибке и программа завершается с помощью функции exit.
  4. В цикле while считывается каждый символ из файла с помощью функции getc и выводится на экран с помощью функции putc.
  5. Файл закрывается с помощью функции fclose.
  6. Программа возвращает 0, что означает успешное выполнение.

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


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

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

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