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

时间:2013-10-09 09:27:27

标签: 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

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

请让我知道如何打印整个帮助页面。

1 个答案:

答案 0 :(得分:0)

使用循环来解决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字节的缓冲区,并且对于帮助页面而言不够大。