Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当控制台的一页已经打印出来时,如何暂停我的C程序?_C_Assembly_Prompt_Dump - Fatal编程技术网

当控制台的一页已经打印出来时,如何暂停我的C程序?

当控制台的一页已经打印出来时,如何暂停我的C程序?,c,assembly,prompt,dump,C,Assembly,Prompt,Dump,我正在开发一个基本的SIC汇编程序,我试图实现的一个功能是,在转储函数期间,如果程序在控制台上生成超过一页的文本,它将提示用户在继续之前按下一个键 我的转储函数读取内存中一系列地址的十六进制值。首先需要定义“页面”是什么。然后你就会知道有多少行可用。然后在打印时,在继续打印下一个X行之前,停止每X行获取一次输入(其中X是每页的行数) 由于在用户按Enter键(正常情况下)之前,读取输入将被阻止,因此程序似乎会暂停。首先,您需要定义“页面”是什么。然后你就会知道有多少行可用。然后在打印时,在继续打

我正在开发一个基本的SIC汇编程序,我试图实现的一个功能是,在转储函数期间,如果程序在控制台上生成超过一页的文本,它将提示用户在继续之前按下一个键


我的转储函数读取内存中一系列地址的十六进制值。

首先需要定义“页面”是什么。然后你就会知道有多少行可用。然后在打印时,在继续打印下一个X行之前,停止每X行获取一次输入(其中X是每页的行数)


由于在用户按Enter键(正常情况下)之前,读取输入将被阻止,因此程序似乎会暂停。

首先,您需要定义“页面”是什么。然后你就会知道有多少行可用。然后在打印时,在继续打印下一个X行之前,停止每X行获取一次输入(其中X是每页的行数)


因为读取输入将被阻止,直到用户按Enter键(正常情况下),然后程序才会暂停。

在POSIX系统上,最简单的方法是通过管道将其输出传送到
更多
。或者在具有该功能的系统上,
less

文件*outpd=popen(“小于”、“w”)并使用它而不是
stdout
。由POSIX指定。
more
也是如此,但您可能想先尝试
less
。或者更好的方法是,在返回到
更多
之前使用
getenv(“寻呼机”)

让另一个程序来解决终端处理和所有这些问题,而不是尝试运行自己的程序

一些非POSIX系统,如Windows,也有可以使用的寻呼机程序。我认为Windows甚至有一个
more
程序,但如果它在cygwin之外的任何标准库中都有
popen
函数,则IDK


要将
stdout
重定向到管道,可以使用更多的低级POSIX函数,如
dup2
(在下面搜索示例)

但是我不认为仅仅使用
popen
就可以实现大部分的便携性。在GNUC库(glibc)中,您可以分配给
stdout
,例如
stdout=popen(…)


但其他C实现可能不支持这一点:
stdout
可以是不支持分配给的宏。()

在POSIX系统上,最简单的方法是通过管道将其输出通过
更多
。或者在具有该功能的系统上,
less

文件*outpd=popen(“小于”、“w”)并使用它而不是
stdout
。由POSIX指定。
more
也是如此,但您可能想先尝试
less
。或者更好的方法是,在返回到
更多
之前使用
getenv(“寻呼机”)

让另一个程序来解决终端处理和所有这些问题,而不是尝试运行自己的程序

一些非POSIX系统,如Windows,也有可以使用的寻呼机程序。我认为Windows甚至有一个
more
程序,但如果它在cygwin之外的任何标准库中都有
popen
函数,则IDK


要将
stdout
重定向到管道,可以使用更多的低级POSIX函数,如
dup2
(在下面搜索示例)

但是我不认为仅仅使用
popen
就可以实现大部分的便携性。在GNUC库(glibc)中,您可以分配给
stdout
,例如
stdout=popen(…)


但其他C实现可能不支持这一点:
stdout
可以是不支持分配给的宏。()

你有很多选择。例如,循环会一直持续到用户按下一个键,或者使用信号来处理(使用
wait();
),等等……在POSIX系统上,最简单的方法是通过管道将其输出通过
更多
。或者在具有该功能的系统上,
less
。e、 g.
文件*outpd=popen(“更少”、“w”)。i、 让另一个程序来解决终端处理等问题。你有很多选择。例如,循环会一直持续到用户按下一个键,或者使用信号来处理(使用
wait();
),等等……在POSIX系统上,最简单的方法是通过管道将其输出通过
更多
。或者在具有该功能的系统上,
less
。e、 g.
文件*outpd=popen(“更少”、“w”)。i、 让另一个程序来解决终端处理等问题。我对它进行了更多的研究,发现了ioctl()方法,它工作起来很有魅力!我对它进行了更多的研究,发现了ioctl()方法,它工作起来很有魅力!