如何在下一行之前打印n个字符?

时间:2019-04-22 02:40:57

标签: c

我必须打印出文件的二进制值以及偏移量和列中的字符。但是,对于字符,我在打印所有值时遇到了问题。我认为问题在于程序检查i计数器是否为10的倍数并且仅在出现这种情况时才打印字符的方式,因此当i少于10个字符且少于10个字符时,它将不打印它们。我不确定。我需要一些帮助来纠正此问题。我需要在字符部分每十个字符打印一次新行,并且该行不得干扰正在打印的其余信息。 Current output

public class Foo {
  private class Bar {
    private class Zub {
    }
  }

  void foo() {
    Bar.Zub z = ...; // <-- I'd like to use `Zub z =` here w/o qualifying with Bar
  }
}

我希望字符列的输出显示整个句子“我喜欢菠萝!”但是实际输出是“我喜欢别针”,前10个字符,其余不加10个字符。

2 个答案:

答案 0 :(得分:0)

您的问题是您始终在检查 if(i%10 == 0),但是您的字符串长度为18。 这意味着 printf(“%c”,file_info [j]) i> 10 时无法运行。

答案 1 :(得分:0)

这不是最佳方法。但这将起作用:

char file_info[250] = "I like pineapples!";
char file_array[250] = "I like pineapples!";

int i = 0, num = 0, j = 0, count = 0;

printf("Offset               Bytes             Characters\n");
printf("------  -----------------------------  ----------");

while (i < strlen(file_array)) {
  printf("\n %5d ", num*10);
  num++;
  int maxOffset = count + 10;
  for (int x = count; x < maxOffset; x++) {
    printf(" %02x", file_array[x]);
    if (x + 1 == maxOffset) printf("  ");
  }
  for (int x = count; x < maxOffset; x++) {
    printf("%c", file_info[x]);
  }
  count = i = i + 10;
}