创建功能:每8个增量=一个段落

时间:2017-06-20 09:55:36

标签: c function return offset

我想在c中创建一个函数,它创建每8个增量(确切地说,当一个整数保持值8时)一个段落/换行(并且还打印一个偏移量)。

在这种情况下,我有一个数组

for (int i = 0; i < sizeof(myarray); i++){
printf(" %02hhX", myarray[i]);
}

现在我想实现我的功能

int row = 0;
for (int i = 0; i < sizeof(myarray); i++){
printf(" %02hhX", myarray[i]);
check_newline(row);
}

功能&#39; check_newline&#39;有这种结构:

void check_newline(int row){
        row++;
        if(row==8){
        offset = offset + 8;
        row= 0;
        printf("\n%06X", offset);        
        }
}

每次,整数&#39;行&#39;达到值8时,将打印一个新的偏移量,并输出&#39; row&#39;的值。将重置为0。

现在,我不知道如何实施return;使用此代码,我的输出看起来像这样

000008 E0 60 66 64 38 7D E0 60 66 64 38 7D 80000008 80 00 FF FF FF FF FF FF 000010 E0 60 66 64 38 7D E0 60 66 64 38 7D 80000010 80 00 FF FF FF FF FF FF

(完全错误)

当我将该功能放入我的代码中时#39; (所以基本上没有使用函数),一切都很好,因为缺少返回语句。

for (int i = 0; i < sizeof(myarray); i++){
    printf(" %02hhX", myarray[i]);
    row++;
    if(row==8){
    offset = offset + 8;
    row= 0;
    printf("\n%06X", offset); 
}

000000 80 00 FF FF FF FF FF FF
000008 E0 60 66 64 38 7D E0 60

我必须经常在我的代码中使用这种计算,因此函数会更加流畅。

1 个答案:

答案 0 :(得分:1)

你过度复杂化了。您不需要额外的变量,因为您可以使用i%(模运算符)来处理这样的行的开头或结尾。

for (int i = 0; i < sizeof(myarray); i++) {
  if (i % 8==0) {
     printf("%06X",i);
  }
  printf(" %02hhX", myarray[i]);
  if (i % 8==7) {
     printf("\n");
  }
}