警告:C 语言中的"format string is not a string literal (potentially insecure)"



我正在编写一个带有变量fcontents的文件,以输入所需文件的内容。我一直收到警告&;格式字符串不是字符串字面值(可能不安全)&;我不知道那是什么意思。

#include <stdio.h>
int main(void) {

char fname[20];
char fcontents[20];

printf("Enter a file name: ");
scanf("%s", fname);
printf("Enter file contents: ");
scanf("%s", fcontents);

FILE * fpointer = fopen(fname,"w");

fprintf(fpointer, fcontents);

fclose(fpointer);
printf("FILE: %s successfully created", fname);
}

更正后的代码

#include <stdio.h>
int main(void) {

char fname[20];
char fcontents[20];

printf("Enter a file name: nEnter file contents:");

scanf("%s %s", fname, fcontents);

FILE * fpointer = fopen(fname,"w");

fprintf(fpointer, "%s", fcontents);

fclose(fpointer);
printf("FILE: %s successfully created", fname);
}

请注意,在这种情况下,您也可以使用fputs而不是fprintf

#include <stdio.h>
int main(void) {

char fname[20];
char fcontents[20];

printf("Enter a file name: nEnter file contents:");

scanf("%s %s", fname, fcontents);

FILE * fpointer = fopen(fname,"w");

fputs(fcontents, fpointer);

fclose(fpointer);
printf("FILE: %s successfully created", fname);
}

相关内容