C:警告:格式';%s';需要匹配的';字符*';论点

C:警告:格式';%s';需要匹配的';字符*';论点,c,pointers,file-io,printf,C,Pointers,File Io,Printf,我目前正在处理文件I/O,并尝试使用此功能: fprintf (FILE *pFile, char *pFormat, <variable list>); 我的编译器发出了一个警告,警告:格式“%s”需要一个匹配的“char*”参数,但我已将myarray声明为char*myarray=“这是一个字符串”。谁能告诉我出了什么问题?我的代码是: #include <stdio.h> int main () { FILE *filePtr; char *myarray =

我目前正在处理文件I/O,并尝试使用此功能:

fprintf (FILE *pFile, char *pFormat, <variable list>);
我的编译器发出了一个警告,警告:格式“%s”需要一个匹配的“char*”参数,但我已将
myarray
声明为
char*myarray=“这是一个字符串”
。谁能告诉我出了什么问题?我的代码是:

#include <stdio.h>
int main ()
{
FILE *filePtr;
char *myarray = "This is a string";

if ((filePtr = fopen("sample.dat", "w")) == NULL) {
   printf ("File could not be opened.\n");
} else {
   printf ("This will print the string onto file:\n");

   while (!feof(filePtr)) {
      fprintf ( filePtr, "\"%s\"", myarray );
   }
}
fclose (filePtr);
return 0;
}
#包括
int main()
{
文件*filePtr;
char*myarray=“这是一个字符串”;
if((filePtr=fopen(“sample.dat”,“w”))==NULL){
printf(“无法打开文件。\n”);
}否则{
printf(“这将把字符串打印到文件:\n”);
而(!feof(filePtr)){
fprintf(filePtr,\%s\,myarray);
}
}
fclose(文件管理器);
返回0;
}

我试图用gcc编译,但它发现了另一个问题-fopen中缺少参数:

 if ((filePtr = fopen("sample.dat")) == NULL) {
因此,需要使用:

 if ((filePtr = fopen("sample.dat", "r")) == NULL) {
此后,代码编译没有问题。 编译器版本:

gcc version 4.2.1 20070831 patched [FreeBSD]

否。显示实际代码。为什么在格式字符串中使用反斜杠?显示实际代码。给我们完整的编译器输出。Krister,他试图打印一个包含在(文字)双引号中的字符串。这没什么问题。请注意,您需要
fopen()
以写入模式保存文件。而且
while
循环永远不会终止。使用
feof()
指示您正在读取而不是写入的文件的结尾。哦,谢谢,我尝试过用不同的版本编译它,它也编译得很好。谢谢
gcc version 4.2.1 20070831 patched [FreeBSD]