Заменить определённые строки из одного файла определёнными числами, и вывести их (коды) в другой файл - C (СИ)

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

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

Привет всем! Недавно нашёл такую проблему. Нам задали сделать "ассемблер", который просмотрит "код" из текстового файла, написанный на псевдоассемблере, и заменит все команды их кодами. Проще говоря, заменить определённые строки из оного файла определёнными числами, и вывести их (коды) в другой файл. И всё это хорошо работало, пока не понадобилось расширить число команд для ассемблера. Теперь вывод в файл не работает. Для теста разбавил код вот так:
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);
}
В примере recode выходной файл. Далее я запускаю эту прогу через командную строку примерно так:
asm-part.exe > prog2.ap
Так воот, Prog.ap остаётся девственно чистым, а Prog2.ap содержит ровно то самое, что ожидалось от Prog.ap. Вся эта каша сейчас лежит на гите вот тут. И у меня даже идей нет, где здесь утка...

Решение задачи: «Заменить определённые строки из одного файла определёнными числами, и вывести их (коды) в другой файл»

textual
Листинг программы
char cmd_txt[5] = {'\0'};

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

  1. Создаётся массив cmd_txt типа char с размером 5 символов.
  2. Все символы в массиве cmd_txt устанавливаются в символ '\0' (ноль).

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


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

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

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