我必须打印出文件的二进制值以及偏移量和列中的字符。但是,对于字符,我在打印所有值时遇到了问题。我认为问题在于程序检查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个字符。
答案 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;
}