Заменить определённые строки из одного файла определёнными числами, и вывести их (коды) в другой файл - C (СИ)
Формулировка задачи:
Привет всем!
Недавно нашёл такую проблему. Нам задали сделать "ассемблер", который просмотрит "код" из текстового файла, написанный на псевдоассемблере, и заменит все команды их кодами. Проще говоря, заменить определённые строки из оного файла определёнными числами, и вывести их (коды) в другой файл. И всё это хорошо работало, пока не понадобилось расширить число команд для ассемблера. Теперь вывод в файл не работает. Для теста разбавил код вот так:
В примере recode выходной файл. Далее я запускаю эту прогу через командную строку примерно так:
Так воот, Prog.ap остаётся девственно чистым, а Prog2.ap содержит ровно то самое, что ожидалось от Prog.ap.
Вся эта каша сейчас лежит на гите вот тут. И у меня даже идей нет, где здесь утка...
int main() { FILE *code, *recode; code = fopen("Prog.txt", "r"); assert(code); recode = fopen("Prog.ap", "w"); assert(recode); /* немного вычислений */ do { /* ещё немного */ fprintf(recode, "%d", cmd_code); fprintf(stdout, "%d", cmd_code); //DBG if (isarg) { fprintf(recode, " %d", arg); fprintf(stdout, " %d", arg); //DBG } fprintf(recode, "\n"); fprintf(stdout, "\n"); //DBG } while (fgetc(code) != EOF && cmd_code != F_END_); fclose(code); fclose(recode); }
asm-part.exe > prog2.ap
Решение задачи: «Заменить определённые строки из одного файла определёнными числами, и вывести их (коды) в другой файл»
textual
Листинг программы
char cmd_txt[5] = {'\0'};
Объяснение кода листинга программы
- Создаётся массив cmd_txt типа char с размером 5 символов.
- Все символы в массиве cmd_txt устанавливаются в символ '\0' (ноль).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д