2017-06-20 11 views
0

cで関数を作成して、8つのインクリメント(正確には整数の値が8のとき)を作成して段落/改行を作成します)。この場合Create関数:8つのインクリメント= 1つの段落

、私は今、私はこの

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

のような機能を私の機能を実装したい配列

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

を持っている 'check_newline' は、この構造を有する:

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

毎回整数 'row'が値8に達すると、新しいオフセットが出力され、 '行'は0にリセットされます。

今、私はreturnの実装方法がわかりません。このコードで、私の出力は、i「は私のコード内の関数を置く」とき

が(そうbasicaly機能を使用していない)、すべてがいいです(ば完全に間違っている)この

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 

のように見えますreturn文がないために発生します。

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

関数の引数はvalue *によって渡され、関数内には 'row'の*ローカルコピー*があります。実際、この*は重複しています...(ただし、今は適切なものが見つかりません) –

+0

コードをインデントしてください。 –

+0

[Cでの参照渡し]の可能な複製(https://stackoverflow.com/questions/2229498/passing-by-reference-in-c) –

答えて

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"); 
    } 
} 
関連する問題