2

我正在做一个在 LINUX 中开发 SIC/XE 汇编器的作业。

当我编写代码时,我遇到了一些错误,但我不知道为什么会这样。你能解释一下为什么会出现这个问题吗?

下面显示的代码显示带有令牌的“test.asm”文件。

178             printf("token1: %s \t",token1);
179             printf("token2: %s \t",token2);
180             printf("token3: %s \t",token3);
181             printf("token4: %s \t",token4);
182             printf("ss\nss");

据此,尤其是“ss\nss”语句,我希望打印出如下所示的结果。

    sstoken1: LDT   token2: LENGTH  token3: (null)  token4: (null)  ss
    sstoken1: WLOOP         token2: TD      token3: OUTPUT  token4: (null)  ss
    ss

但是,当我将这个程序运行到最后时,我遇到了分段错误并遇到了奇怪的情况。

sstoken1: OUTPUT        token2: BYTE    token3: X'05'   token4: (null)  ss
sstoken1: END   token2: FIRST   token3: (null)  token4: (null)  ss
Segmentation fault.

“Segmentation fault”语句之前没有“ss”。我不知道为什么。请你给我解释一下好吗?

4

1 回答 1

1

我相信它是由 SEGV 在刷新标准输出之前杀死的进程打印的。尝试添加:

fflush(stdout);

在 printf 语句之后。

于 2012-05-05T19:16:46.257 回答