我正在用C语言编写一个程序,我的问题非常简单:如何知道下一次对printf()的调用是否会超过屏幕尺寸?
也就是说,有时当您使用打印时,文本可能无法显示在一个屏幕中。例如,我有4-5个字符串要打印,我想创建一个打印整个文本的函数,或者打印到文本由于屏幕尺寸而被切断为止。
发布于 2020-05-29 19:52:26
您可以使用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);发布于 2020-06-16 18:48:13
根据How do you clear the console screen in C?的说法,"C不理解屏幕的概念,所以任何代码都不能移植“。因此,为了使我的问题更具体,我正在寻找一种在UNIX环境中执行上述操作的方法。
我重新表述我的问题:
有时当您使用打印时,文本可能无法显示在一个屏幕中。例如,我有4-5个字符串要打印,我想创建一个函数来打印,直到文本被切断,因为它不能适应可用的屏幕尺寸。
我希望存在一个( UNIX系统的)系统函数,它在显示器向下滚动以“跟随”打印输出时触发。也就是说,当有人继续在终端中打印时,终端会自动向下滚动,以便您可以监控打印输出。这样的事情真的存在吗?
https://stackoverflow.com/questions/62085039
复制相似问题