2016-11-05 53 views
1
fprintf(fptr2,"\n\n:%s",ctime(&t),"\t ","\t"); 

这条线工作正常,在开发中,但不是在Ubuntu的,因为它产生以下错误参数太多[-Wformat-额外参数]

warning: too many arguments for format [-Wformat-extra-args] 
fprintf(fptr2,"\n\n:%s",ctime(&t),"\t ","\t");  
       ^

我应该怎么办?

+3

改为:'fprintf(fptr2,“\ n \ n:%s \ t \ t”,ctime(&t));' – kaylum

+2

“Works fine”。最后的单词 – EOF

+1

格式字符串后面有3个参数,但只有一个'%s'在格式字符串中,你期待它如何处理额外的参数? – Barmar

回答

0

fprintf采用可变数目的参数:

  • 一个FILE*输出流
  • 格式字符串
  • 一个用于每个%格式,通过如果这些可选的宽度和/或精度之前额外的参数被指定为*

您应该只有一个额外的参数,即%s格式的字符串。

额外的参数"\t""\t"只是被忽略,但编译器会给你一个诊断,因为它们的存在可能表明有一些编程错误。

这样的警告是一个祝福,因为它们可以防止许多愚蠢的错误,从拼写错误到参数类型不匹配。您的dev环境配置为保持安静,对您不利。看着你解决它:添加编译器选项,如-Wall -W-Weverything