В конце каждой строки вставить заданный символ - C (СИ)

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

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

Написать программу, выполняющую посимвольную обработку текстового файла (табл. 8). Ввод параметров организовать в командной строке запуска программы. табл.8 В конце каждой строки вставить заданный символ 1.1. Имя входного файла 2.2. Заданный символ Надеюсь на понимание. Спасибо!

Решение задачи: «В конце каждой строки вставить заданный символ»

textual
Листинг программы
#include <stdbool.h>
#include <stdio.h>
 
static void usage(const char programName[ ]) {
    printf(
        "Usage:\n"
        "  %s <input-file> <character-to-append>\n",
        programName
    );
}
 
int main(int argc, char* argv[ ]) {
    if (argc != 3) {
        usage(argv[0]);
        return 2;
    }
    if (!argv[2][0] || argv[2][1]) {
        fputs("Second argument must be a single character!\n", stderr);
        usage(argv[0]);
        return 1;
    }
    FILE* f = fopen(argv[1], "rb");
    if (!f) {
        fprintf(stderr, "Cannot open '%s'\n", argv[1]);
        return 1;
    }
    int c;
    bool cr = false, newline = false;
    while (c = getc(f), c != EOF) {
        if (c == '\r') {
            cr = newline = true;
            putchar(argv[2][0]);
        } else if (cr) {
            cr = false;
            newline = c == '\n';
        } else {
            newline = c == '\n';
            if (newline)
                putchar(argv[2][0]);
        }
        putchar(c);
    }
    fclose(f);
    if (!newline)
        putchar(argv[2][0]);
    return 0;
}

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

  1. Программа добавляет символ в конец каждой строки файла.
  2. Если файл не открыт, программа выводит сообщение об ошибке и завершает работу с кодом 1.
  3. В цикле while программа считывает каждый символ из файла.
  4. Если символ является символом новой строки (\r), программа устанавливает флаг cr и флаг newline в true и выводит символ, указанный во втором аргументе.
  5. Если флаг cr установлен, программа выводит символ, указанный во втором аргументе, и сбрасывает флаг cr.
  6. Если флаг newline установлен, программа выводит символ, указанный во втором аргументе.
  7. Если файл открыт, программа считывает каждый символ до конца файла.
  8. Если файл не найден, программа выводит сообщение об ошибке и завершает работу с кодом 1.
  9. Программа закрывает файл.
  10. Если флаг newline не установлен, программа выводит символ, указанный во втором аргументе.
  11. Программа завершает работу с кодом 0.

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


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

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

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