将char *传递给printf()调用时出错

时间:2016-02-23 16:53:48

标签: c printf

/ *****读取用户输入的条目* /

int input_string(char *prompt, char *s, int count) 
{
    char c;

    printf(prompt);
    while ((c = getchar()) != EOF 
           && c != '\n' && count > 0) {
        *s = c;
        s++;
        count--;
    }
    *s = '\0';
    return 0;
}

是c编程的新手。我正在阅读一个简单的数据库程序和一个例子。我遇到了这段代码打印(提示); ,我的编译器给出了关于它的错误,

  

格式字符串不是字符串文字(可能不安全)[-werror,-wformat-security]。

请帮助阻止错误。

1 个答案:

答案 0 :(得分:2)

与你的代码一样,

 printf(prompt);

错误,因为它为string formatting attacks开放了条款。您可以用

替换它
puts(prompt);

如果您不打算在输出中使用任何转换说明符(和相关参数)。