linux下文件操作问题,求大神为我解答

lanlvy 2014-02-27 09:39:06
下面是我的程序,为什么我在此程序文件所在目录建立了一个c1.txt文件,里面有内容abc三个字符,为什么运行程序后显示的还是Connot open file strike any key exit!,在这里拜谢各位给我解答了,谢谢!

FILE *fp;
char ch;
if(fp=fopen("c1.txt","r")==NULL);
{
printf("Connot open file strike any key exit!\n");
exit(1);
}
ch=fgetc(fp);//fgetc(FILE *stream);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
...全文
139 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
还有多远 2014-02-28
  • 打赏
  • 举报
回复
既然是在这个程序下新建的文件,路径应该没问题,既然程序和文件是同一个用户所建的,权限应该也不是问题。看了下程序,感觉问题在这:

if(fp=fopen("c1.txt","r")==NULL); //1、这个分号是lz粗心导致的吧,因为有这个分号的存在,下面花括
//号的代码成为一个无条件进入的局部块,必然会执行
//2.由于赋值运算符的优先级比逻辑运算符的优先级低,所以if括号内的fp=fopen("c1.txt","r")==NULL实际
//上等价于fp = (fopen("c1.txt","r") == NULL),因为这里fopen("c1.txt","r")返回一个非NULL值,所
//(fopen("c1.txt","r") == NULL)等于0,从而fp = 0 = NULL
//应改为if((fp = fopen("c1.txt","r")) == NULL)
{
printf("Connot open file strike any key exit!\n");
exit(1);
}
mujiok2003 2014-02-28
  • 打赏
  • 举报
回复
引用 7 楼 CHINAHEAO 的回复:
if(fp=fopen("c1.txt","r")==NULL); 这句话有错,打不开文件,先运算fopen("c1.txt","r")==NULL,最后才运算fp=.... 别忘了给分啊
呵呵,lol
CHINAHEAO 2014-02-28
  • 打赏
  • 举报
回复
if(fp=fopen("c1.txt","r")==NULL); 这句话有错,打不开文件,先运算fopen("c1.txt","r")==NULL,最后才运算fp=.... 别忘了给分啊
赵4老师 2014-02-28
  • 打赏
  • 举报
回复
关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
拼搏007 2014-02-28
  • 打赏
  • 举报
回复
引用 4 楼 uuuououlcz 的回复:
既然是在这个程序下新建的文件,路径应该没问题,既然程序和文件是同一个用户所建的,权限应该也不是问题。看了下程序,感觉问题在这:

if(fp=fopen("c1.txt","r")==NULL); //1、这个分号是lz粗心导致的吧,因为有这个分号的存在,下面花括
//号的代码成为一个无条件进入的局部块,必然会执行
//2.由于赋值运算符的优先级比逻辑运算符的优先级低,所以if括号内的fp=fopen("c1.txt","r")==NULL实际
//上等价于fp = (fopen("c1.txt","r") == NULL),因为这里fopen("c1.txt","r")返回一个非NULL值,所
//(fopen("c1.txt","r") == NULL)等于0,从而fp = 0 = NULL
//应改为if((fp = fopen("c1.txt","r")) == NULL)
{
printf("Connot open file strike any key exit!\n");
exit(1);
}
楼上正解!
shiguojie19892 2014-02-28
  • 打赏
  • 举报
回复
引用 4 楼 uuuououlcz 的回复:
既然是在这个程序下新建的文件,路径应该没问题,既然程序和文件是同一个用户所建的,权限应该也不是问题。看了下程序,感觉问题在这:

if(fp=fopen("c1.txt","r")==NULL); //1、这个分号是lz粗心导致的吧,因为有这个分号的存在,下面花括
//号的代码成为一个无条件进入的局部块,必然会执行
//2.由于赋值运算符的优先级比逻辑运算符的优先级低,所以if括号内的fp=fopen("c1.txt","r")==NULL实际
//上等价于fp = (fopen("c1.txt","r") == NULL),因为这里fopen("c1.txt","r")返回一个非NULL值,所
//(fopen("c1.txt","r") == NULL)等于0,从而fp = 0 = NULL
//应改为if((fp = fopen("c1.txt","r")) == NULL)
{
printf("Connot open file strike any key exit!\n");
exit(1);
}
码神,看的太犀利了!就是这个问题
lanlvy 2014-02-28
  • 打赏
  • 举报
回复
谢谢各位解答,是我粗心了,4楼谢谢了!
mujiok2003 2014-02-27
  • 打赏
  • 举报
回复
try perror(""); before exit(1);
dbzhang800 2014-02-27
  • 打赏
  • 举报
回复
程序的当前目录和程序所在的目录一致么? 试试绝对路径呢?
ma100 2014-02-27
  • 打赏
  • 举报
回复
可能是权限问题

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧