即使我添加%s,格式也不是字符串文字

时间:2013-09-22 20:05:55

标签: c gcc gcc-warning

我在各种论坛上寻找答案,尝试了各种各样的事情并且仍然收到此错误:

warning: format not a string literal and no format arguments [-Wformat-security]

编译器指向函数中有错误的行,这是它的外观:

int print_notes(int fd, int uid, char *searchstring) {
    int note_length;
    char byte=0, note_buffer[100];

    note_length = find_user_note(fd, uid);
    if(note_length == -1)  // if end of file reached
        return 0;           //   return 0

    read(fd, note_buffer, note_length); // read note data
    note_buffer[note_length] = 0;       // terminate the string

    if(search_note(note_buffer, searchstring)) // if searchstring found
        scanf("%s", note_buffer) // Got this line from an answer in the forums
        printf(note_buffer);  // compiler points here
    return 1;
}

如果你想要完整的代码我可以在这里发布,但它有点长:/不知道是否可以。

1 个答案:

答案 0 :(得分:2)

警告:

printf(note_buffer);

当你在运行时形成字符串并尝试打印它时。

使用:

printf("%s",note_buffer);