Заменить определённые строки из одного файла определёнными числами, и вывести их (коды) в другой файл - 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' (ноль).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д