日期:2014-05-16  浏览次数:20814 次

ARM平台下fopen打开文件出现段错误
最近发现一个问题,我在linux系统下用fopen打开文件,编译能成功打开,交叉编译移植到开发板上,以写方式打开文件出现段错误,我的程序很简单,只是用来测试。程序如下:
#include<stdio.h>
void main()
{
     FILE *fp;
     fp=fopen("filename","w+");
     if(fp != NULL)
          printf("open\n");
     fclose(fp);
}
在linux系统下,gcc编译以读和写的方式fopen打开都成功,但交叉编译后,以写方式打开文件,出现段错误,当我把fp=fopen("filename","w+");改为fp=fopen("filename","r");时,程序能成功打开
急求大家帮忙解决


------解决方案--------------------
代碼有一點小問題,如果文件不存在,fp==NULL,那麼在Linux上直接fclose(NULL)是會出現段錯誤的。
------解决方案--------------------
用perror看看原因。

if (fp == NULL) // 出错
{
   perror("open error");
   return -1;
}