C程序警告:格式不是字符串文字而是格式参数

时间:2014-11-28 12:57:11

标签: c ubuntu gcc char printf

我正在使用 -

char str[200];
...
sprintf(str,"%s", val) 
msg(str);
sprintf(str, "%s: %s",timestr,"\n recv -");
msg(str);
... 
} 
void msg(const char str[]) 
{ 
 ...
fprintf(fp, str);
 ...
}

警告:格式不是字符串文字而没有格式参数

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您需要更改

fprintf(fp, str);

fprintf(fp, "%s", str);
             ^
             |

在您的代码中,您错过了格式说明符"%s"

请查看fprintf() here的手册页以获取更多详细信息。

答案 1 :(得分:2)

如果要打印常量字符串,请不要使用fprintf()

使用fputs(str, fp)

如果您认为必须使用fprintf(),请添加格式字符串,即使用fprintf(fp, "%s", str);