Я хочу сгенерировать таблицу символов из кода сборки SIC.Для этого я попытался отделить каждую строку от кода сборки.Следовательно, пытаясь сделать первый шаг для этого, я попробовал этот код.
Здесь, то, что я пытался, это читать код сборки из файла строка за строкой.А затем для разделения строк в строке на токены.
Когда я удаляю секцию разделения токенов (как указано в коде), я печатаю все строки, как и ожидалось.Но если я запускаю разделение токенов, первая строка читается, а токены разделяются, как я и ожидал.Но для второй строки я получаю ошибку как ошибку сегментации.Я не мог проследить, где я ошибся.
Итак, мне нужны объяснения от экспертов.
Заранее спасибо.
FILE* sourceCode = fopen("/home/muthu/LangFiles/SIC/PASS1/PROGRAM.txt","r");
if(checkForFileOpeningErrors() == ERROR) //Iam using separate function
return EXIT_FAILURE; //Terminate the program.
int maxLineLength = 50;
while(1)
{
char* lineReader = NULL; // since getline will reallocate.
if( getline(&lineReader,(size_t*)&maxLineLength,sourceCode) == -1 )
break;
printf("%s",lineReader);
// TOKEN SEPARATION STARTS HERE.... If I comment this section out iam getting all lines printed
char* wordReader;
wordReader = strtok(lineReader," \n");
printf("%s\n",wordReader);
while(1)
{
wordReader = strtok(NULL," \n");
printf("%s\n",wordReader);
}
// TOKEN SEPARATION ENDS HERE....
}
МойФАЙЛ:
COPY START 1000
FIRST STL RETADR
CLOOP JSUB RDREC
LDA LENGTH
COMP ZERO
JEQ ENDFIL
JSUB WRREC
J CLOOP
.
.
.
END
Мой пример вывода:
muthu@muthu-G31M-ES2L:~/LangFiles/PASS1$ ./a.out
All Files successfully opened!! Operation has begun...
COPY START 1000
COPY
START
1000
segmentation Fault.