Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 打印未签名字符时出现printf错误_C - Fatal编程技术网

C 打印未签名字符时出现printf错误

C 打印未签名字符时出现printf错误,c,C,我试图打印未签名字符的值,但下面代码的printf出现错误。我希望以后将这两个值组合在一起,并将组合后的字节输出为十进制。我做错了什么?提前谢谢 unsigned char *buffer = malloc(512); unsigned char first_byte = buffer[11]; unsigned char second_byte = buffer[12]; printf(%u, first_byte); printf()的第一个参数是字符串。您已经在那里写入了“裸”符号%u,

我试图打印未签名字符的值,但下面代码的printf出现错误。我希望以后将这两个值组合在一起,并将组合后的字节输出为十进制。我做错了什么?提前谢谢

unsigned char *buffer = malloc(512);
unsigned char first_byte = buffer[11];
unsigned char second_byte = buffer[12];
printf(%u, first_byte);

printf()
的第一个参数是字符串。您已经在那里写入了“裸”符号
%u
,它不是字符串

您需要将其设置为字符串文字:

printf("%u", (unsigned int) first_byte);
强制转换是为了确保传递正确的类型,以明确需要进行转换,因为
%u
需要类型
无符号整数
,但您希望使用
无符号字符
调用,将其用作无符号8位整数(
无符号字符
)的转换说明符

#include <stdio.h>

int main(void)
{
  unsigned char c1 = '*'; /* The ASCII value for '*' is 42. */
  unsigned char c2 = 255;

  printf("%hhu %hhu\n", c1, c2);

  return 0;
}

将格式说明符放在引号内。在继续之前:阅读一本好的C语言书。阅读时要注意。
42 255