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].buf[i] + 1

请注意,如果char是有符号类型并且存储在数组的某个元素中的值等价于0xFF,则向其添加 1 是未定义的行为(尽管您很可能会打印 ASCII NUL '\0')。

于 2012-08-24T17:18:41.480 回答