警告:格式参数太多[-Wformat-extra-args]

时间:2014-12-16 17:10:12

标签: c++ c

我有一个我想要开始工作的软件。它写于2008年&我已经解决了许多问题,但仍然有很多这方面的问题。我搜索过&搜索,但没有找到任何相关的答案。 这是代码部分: / * APPS * /

aa = 0x80c4b8;

/* Engine Speed */

bb = 0x80e6dc;

/* Manifold Pressure */

cc = 0x80b330;

/* Torque */

dd = 0x80ecbc;

printf("Enter name of log file: ");

fgets(tbuf, 30, stdin);

OF = fopen(tbuf,"w+");

if(OF == NULL) {
    printf("Error creating file\n");
    return(-1);
    }

printf("\n\n");

fprintf(OF,"SCI Memory Read Log file\n");
fprintf(OF,"Acc\tRPM\tMAP\tTQ\n",aa,bb,cc,dd);

有人可以帮忙吗?我甚至不是编码和新手的新手已经修复了14页的警告,直至这种风格警告的页面。我很确定这是C ++,但并不积极。 谢谢, 编

1 个答案:

答案 0 :(得分:4)

在这一行中,您传递aa, bb, cc, dd并且格式字符串"Acc\tRPM\tMAP\tTQ\n"不期望任何参数

fprintf(OF,"Acc\tRPM\tMAP\tTQ\n",aa,bb,cc,dd);

我认为你想要的是

fprintf(OF,"Acc 0x%x\tRPM 0x%x\tMAP 0x%x\tTQ 0x%x\n",aa,bb,cc,dd);

如果值为unsigned long int

fprintf(OF,"Acc 0x%lx\tRPM 0x%lx\tMAP 0x%lx\tTQ 0x%lx\n",aa,bb,cc,dd);

请注意,说明符%x打印unsigned int的十六进制表示,%lx表示unsigned long int