我在各种论坛上寻找答案,尝试了各种各样的事情并且仍然收到此错误:
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;
}
如果你想要完整的代码我可以在这里发布,但它有点长:/不知道是否可以。
答案 0 :(得分:2)
警告:
printf(note_buffer);
当你在运行时形成字符串并尝试打印它时。
使用:
printf("%s",note_buffer);