В конце каждой строки вставить заданный символ - 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.
- В цикле while программа считывает каждый символ из файла.
- Если символ является символом новой строки (\r), программа устанавливает флаг cr и флаг newline в true и выводит символ, указанный во втором аргументе.
- Если флаг cr установлен, программа выводит символ, указанный во втором аргументе, и сбрасывает флаг cr.
- Если флаг newline установлен, программа выводит символ, указанный во втором аргументе.
- Если файл открыт, программа считывает каждый символ до конца файла.
- Если файл не найден, программа выводит сообщение об ошибке и завершает работу с кодом 1.
- Программа закрывает файл.
- Если флаг newline не установлен, программа выводит символ, указанный во втором аргументе.
- Программа завершает работу с кодом 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д