在fprintf中:地址0x000000处的错误故障访问冲突,读取地址0x00

时间:2016-11-07 10:52:53

标签: c

我在Borland C中运行以下代码并出现以下错误:

  

线程已停止。 j:\ bc5 \ bin \ file \ pro001.exe:执行故障访问冲突   0x4043cc:读取地址0x12。

#include <stdio.h>
#include <stdlib.h>
main()                                 
{  
FILE *fp;
fp=fopen ("C:\Users\MEYSAM\Desktop\1.txt","w+");
fprintf (fp,"This is testing for fprintf ...\n");
fputs ("that is output filename by reference.",m);
fclose (fp);   
}

3 个答案:

答案 0 :(得分:1)

可能fopen()失败,返回NULL文件指针。

您必须始终检查I / O操作是否成功。

答案 1 :(得分:1)

你需要这个:

#include <stdio.h>
#include <stdlib.h>

int main()
{  
  FILE *fp;
  fp=fopen ("C:\\Users\\MEYSAM\\Desktop\\1.txt","w+");
            // ^ using \\ instead of \, you need to escape the \ character

  if (fp == NULL)  // << checking if file could not be opened
  {
     printf("Could not open file.\n");
     return 1;
  }      

  fprintf (fp,"This is testing for fprintf ...\n");
  fputs ("that is output filename by reference.", fp);
                                             // ^ replaced m by fp
  fclose (fp);   
}

答案 2 :(得分:0)

首先,您没有检查fopen是否已成功。另一个问题是你在代码中写道:

fputs ("that is output filename by reference.",m);

其中m未定义且应该是文件的名称,因此它应为fp

Here您可以找到fputs的使用情况。