警告:“format string is not a string literal(potentially insecure)”in C [duplicate]

cgyqldqp  于 2023-04-05  发布在  其他
关注(0)|答案(1)|浏览(241)

此问题在此处已有答案

Error: format string is not a string literal(6个答案)
4小时前关门了。
我写了一个文件,用一个变量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);

}
wz3gfoph

wz3gfoph1#

更正代码。

#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);

}

相关问题