我有以下代码:
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?
答案 0 :(得分: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
}
答案 1 :(得分: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
,则向其中添加一个是未定义的行为(尽管您很可能会打印ASCII NUL '\0'
)。