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

标签 c

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

int main()
{
   char file_info[250]="I like pineapples!";
   FILE *fptr;
   if ((fptr = fopen("try.bin","wb")) == NULL){
       printf("Error! opening file");
       exit(1);
   }

      fwrite(&file_info, sizeof(char), 250, fptr);

   fclose(fptr);
fptr=fopen("try.bin","rb");
 char file_array[250];

fread(file_array,sizeof(char),250,fptr); // read one character

int i=0,num=0,j=0,count=0;
printf("Offset               Bytes             Characters\n");
printf("------  -----------------------------  ----------");
 for(i=0;i<strlen(file_array);i++){

     if(i%10==0)
        {
            if(i>=9){
            count=j;
            printf("  ");
            for(;j<count+10;j++)
            {
                printf("%c",file_info[j]);
            }
            }
            printf("\n %5d ",num*10);
            num++;

        }


 printf(" %x",file_array[i]);
 }
 fclose(fptr);

 return 0;
}

我希望字符列的输出显示整个句子“我喜欢菠萝!”但实际输出是“I like pin”,即前 10 个字符,其余未达到 10 个的字符将被忽略。

最佳答案

这不是最佳方式。但这会起作用:

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;
}

关于c - 如何在下一行之前打印n个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55788547/

相关文章:

c - 通过非const指针修改const int

c - 更改指针 (C) 时数组元素会发生什么?

c - MPI 为什么这个简单的循环不起作用?

c++ - 为什么 C/C++ 中没有单位数据类型?

嵌套列表的 C 等价物 (Python)

c - C 中的二维数组和警告 : assignment makes integer from pointer without a cast

c - 关于复制垃圾

带分号的 C 参数出现被截断

c - 调用 printf() 时出现 EXC_BAD_ACCESS

c - ld 手动解析多个定义