如何知道我的下一次调用printf()是否会超过屏幕大小?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何知道我的下一次调用printf()是否会超过屏幕大小?相关的知识,希望对你有一定的参考价值。
我正在用C语言编写一个程序,我的问题很直接:如何知道我的下一次调用是否是在 printf()
会不会超过屏幕大小?
也就是说,有时使用print时,文字可能无法在一个屏幕上显示。例如,我有4-5个字符串要打印,我想创建一个函数,打印整个文本,或者打印到文本因屏幕大小而被切断。
答案
你可以使用 snprintf
来写入一个字符串缓冲区,然后将这个缓冲区写入实际的控制台输出。由于你似乎不能控制你要写的字符数,我建议使用 int snprintf( char* buffer, std::size_t buf_size, const char* format, ... )
. 它允许你限制写入的字符数,以避免缓冲区溢出。
char buffer[80+1]; // maximum length of a complete line.
snprintf(buffer, sizeof(buffer), "my output: %d, %s", someInt, someString);
if (strlen(buffer) >= nrOfCharsLeftInLine) {
buffer[nrOfCharsLeftInLine] = 0x0;
}
printf("%s",buffer);
另一答案
根据... C语言中如何清除控制台屏幕?,"C语言不懂屏幕的概念。所以任何代码都无法移植"。所以为了让我的问题更具体,我想寻找一种在UNIX环境下执行上述操作的方法。
我重新表述一下我的问题。
有时当你使用打印功能时,文字可能无法在一个屏幕上显示。例如,我有4-5个字符串要打印,我想创建一个函数,打印直到文本因无法容纳在剩余的可用屏幕尺寸中而被切断。
我希望存在一个系统函数(UNIX系统),当显示器向下滚动时,该函数被触发,以 "跟随 "打印的输出。也就是说,当有人在终端中不断打印时,终端会自动向下滚动,这样你就可以监视打印的输出。这样的事情存在吗?
以上是关于如何知道我的下一次调用printf()是否会超过屏幕大小?的主要内容,如果未能解决你的问题,请参考以下文章