1

次のコードがあります。

char buf[] = {0x45, 0x76, 0x72, 0x23, 0x12};
int main(void)
{
    int i;
    for (i = 0; i<=sizeof(buf); ++i){
      printf("%c\n", buf[i]); 
    }
}

私がやりたいのbuf[i]は、印刷されたときに取得し、0x45 を 0x46 に読み替えることです。基本的に、for ループを通過するときに各値に 1 を追加するにはどうすればよいですか?

4

2 に答える 2

8

使用する+

for (i = 0; i<sizeof(buf); ++i){
  printf("%c\n", buf[i] + 1); //  print the incremented value
  //printf("%c\n", buf[i]++); //  increment the printed value

}
于 2012-08-24T17:17:51.430 に答える
3

それに 1 を追加します。

#include <stdio.h>

char buf[] = { 0x45, 0x76, 0x72, 0x23, 0x12 };
int main(void)
{
    int i;
    for (i = 0; i < sizeof(buf); i++)
      printf("%c\n", buf[i] + 1);
}

それと同じくらい簡単です!

バッファ内の値を変更して出力したい場合は、おそらく++buf[i]in の代わりに を使用しますbuf[i] + 1

ifcharが符号付きの型で、配列の一部の要素に格納されている値が と同等である0xFF場合、それに 1 を追加すると未定義の動作になることに注意してください (ASCII NUL を出力する可能性が最も高いでしょう'\0')。

于 2012-08-24T17:18:41.480 に答える