gpt4 book ai didi

c - 警告 : format '%lu' expects argument of type 'long unsigned int' , 但参数 4 的类型为 'long unsigned int *' [-Wformat]

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:36 25 4
gpt4 key购买 nike

我收到警告:格式“%lu”需要类型为“long unsigned int”的参数,但参数 4 的类型为“long unsigned int *”[-Wformat] 下面的代码

unsigned long  buf[254];
char systemlogmsg[500]= {'\0'};
snprintf(systemlogmsg, sizeof(systemlogmsg), "INFO: %lu ", buf);

我应该用什么代替 %lu

此外,我尝试使用

snprintf(systemlogmsg, sizeof(systemlogmsg), "INFO: %lu ", (unsigned long int *) buf);

但这并没有帮助。我应该如何通过类型转换?

最佳答案

unsigned long  buf[254];

声明一个无符号长整数数组。所以 buf 就 sprintf 而言是一个指针。但是您正在尝试格式化 %lu,它不需要指针,可能是数组的元素:

snprintf(systemlogmsg, sizeof(systemlogmsg), "INFO: %lu ",  buf[0]);  // ok

因此,如果您有 254 个无符号长整数,您需要决定打印哪一个。如果你想全部打印出来:

int s = 0, i;
for (i=0; i< 254; i++)
s+=snprintf(systemlogmsg+s,
sizeof(systemlogmsg)-s, "INFO: %lu ", buf[i]); // ok

关于c - 警告 : format '%lu' expects argument of type 'long unsigned int' , 但参数 4 的类型为 'long unsigned int *' [-Wformat],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17003829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com