Разрезать текстовый файл на части по N строк и символу
запуск через кмд
./programma input.txt out.txt log.txt q 3
input.txt - входной текстовик, out.txt - текстовик, в котором будет написан результат, log.txt - просто логи, q - символ, до и после которого программа должна "разрезать" строки, 3 - число разрезов. пусть в input.txt будет строка qwertyqmoqklqqq, символ - q, а число разрезов - 3, тогда результат должен быть
q
werty
q
mo
q
klqqq
Вот мой код, подскажите, в чем ошибка, и как исправить на рабочее
char* symbol=argv[4], syb;
char* num=argv[5], N;
char* filename = argv[1], c;
FILE* input = fopen(filename, "r+");
for(i = 1; i <= N; i++)
{
while((c = tolower (fgetc(input)) != EOF))
{
if(c == syb)
{
putchar(c);
printf("\n");
}
}
}
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Вот что говорит компилятор:
$ gcc -std=c11 -pedantic -Wall -Wextra -Werror -O temp.c temp.c: In function ‘main’: temp.c:9:11: error: unused variable ‘num’ [-Werror=unused-variable] 9 | char* num=argv[5], N; | ^~~ temp.c:8:11: error: unused variable ‘symbol’ [-Werror=unused-variable] 8 | char* symbol=argv[4], syb; | ^~~~~~ temp.c:13:18: error: ‘N’ is used uninitialized in this function [-Werror=uninitialized] 13 | for(i = 1; i <= N; i++) | ~~^~~~ temp.c:17:15: error: ‘syb’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 17 | if(c == syb) | ^ cc1: all warnings being treated as errors
В переводе на человеческий:
- переменные
numиsymbolне используются; - для переменных
Nиsybне заданы значения.
То есть, программа не пользуется последними двумя параметрами командной строки.
P.S. Хорошие вопросы начинаются когда компилятор перестаёт выдавать ошибки.