-2

我在各种论坛上四处寻找答案,尝试了各种方法,但仍然出现此错误:

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;
}

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

4

1 回答 1

2

它发出警告:

printf(note_buffer);

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

利用 :

printf("%s",note_buffer);

于 2013-09-22T20:09:45.187 回答