@newmersedez

Как распечатать строку по заданному алгоритму?

Здравствуйте, снова пишу интерпретатор, так вот..... Есть, допустим, входной файл, содержащий в себе инструкции вида:
A := B + C;;; ss D := E & G;;;;;
C := F <> z;;
X := \A;
rEad(D, base);
write(D, base);


Инструкции могут быть записаны в одну строку, иметь множество пробелов и табуляций, содержать ошибки и тд, но суть не в этом. У меня есть метод, который просто парсит эту строку и возвращает динамический массив строк(То есть, допустим, строку C := F <> z;; он распарсит как "C" ":=" "F" "<>" "z" ";" ";" ).

Я хочу, чтобы инструкции выводились на экран. Если в строке одна инструкция, как, к примеру, 2-5 строках, то понятно, как их выводить. Проблема в том, как разделить вывод нескольких инструкций, записанных в одной строке. То есть, если у меня в строке <Операция1> <Операция2>(как в 1 строке), то я хочу сделать такой вывод:

<Операция1>
<Операция2>


Важно: разделителями инструкций является символ точка с запятой ;

Подскажите пожалуйста, как это сделать? Это просто, но я уже голову сломал. Вот фрагмент неудачной попытки
#include <stdio.h>
#include <string.h>
#include "stringparse.h"

int     operation_processing(FILE *file)
{
    int     i;
    int     j;
    int     k;
    int     size;
    char    buf[BUFSIZ];
    char    **parsed_string = NULL;

    i = 0;
    size = 0;
    while(!feof(file))
    {
        fgets(buf, sizeof(buf), file);
        strtok(buf, "\n");
        parsed_string = string_parse(buf, &size);
        for(i = 0; i < size; i++)
        {
            while(strcmp(parsed_string[i], ";"))
            {
                printf("%s  ", parsed_string[i]);
                i++;
                if(!strcmp(parsed_string[i], ";"))
                {
                    while(!strcmp(parsed_string[i], ";"))
                    {
                        printf(";  ");
                        i++;
                    }
                    printf("\n");
                }
            }
        }
    }
    return (0);
}
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы