c - 如何打印一个巨大的字符串

标签 c printf

我是初学者,我需要知道如何用 C 打印整个帮助页面。

我正在尝试:

unsigned short * entireHelpPage;
unsigned int * someString:
printf("comparing %s to %s", someString, entireHelpPage);

这是打印这样的东西:

comparing Dog to Dog is a domestic animal.. blah blah.. Dogs are bred in mos

正如您所看到的,当我尝试打印整个帮助页面时,它没有完全显示。

请告诉我如何打印整个帮助页面。

最佳答案

使用循环来解决 printf() 的限制或潜在的内存/显示问题。

OP 遇到一些问题。 printf() 在出现问题之前应该能够打印至少 4095 个字符。要解决不合格问题,请使用循环。要查找意外的不可打印字符,请以特殊方式打印它们。

const char *s = (const char *) entireHelpPage;
fputs(">", stdout);
while (*s) {
  if (isgraph(*s)) {
    fputc(*s, stdout);
    }
  else {
    fprintf(stdout, "[%02X]", (unsigned) *s);
    }
  s++;
}
fputs("<\n", stdout);

此外:使用 unsigned Short * 作为指向 char* 数据的指针是很奇怪的。我怀疑 entireHelpPage 指向的尾部内存指针被代码意外覆盖。可能 entireHelpPage 是一个大约 400 字节的缓冲区,对于帮助页面来说不够大。

关于c - 如何打印一个巨大的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19268037/

相关文章:

c - Clang 5.0 上的 vsprintf 和 vsnprintf [-Wformat-nonliteral] 警告

c - 尝试打印方程的答案并在 C 中得到零。

c - printf() 填充 C 中的列

assembly - 当我在 x86 程序集中 printf 时,ANSI 转义码不起作用?

c - 为什么变量在同一语句中递增后返回以前的值?

c++ - GetModuleFileNameW 的转换错误

c realloc - 内存未按我设置分配

c - 数组不溢出(C语言)

c - 错误: Don't know how to make

c - 指向带函数的二维数组的指针