Ubuntu Kylin技术论坛

 找回密码
查看: 920|回复: 5

文件不能打开

[复制链接]

该用户从未签到

发表于 2018-7-28 18:12:29 | 显示全部楼层 |阅读模式
文件不能打开,新建了exp01.txt,但还是提示“cannot open file”

#include <stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp;
    char ch;
    if((fp=fopen("/home/alienzhy/文档/exp01.txt","w")))
    {
        printf("cannot open file\n");
        exit(0);
    }
    ch=getchar();
    while(ch!='#')
    {
        fputc(ch,fp);
        ch=getchar();   
    }
    fclose(fp);
}

回复

使用道具 举报

  • TA的每日心情
    开心
    2018-8-20 03:25
  • 签到天数: 157 天

    [LV.7]常住居民III

    发表于 2018-7-28 22:19:02 | 显示全部楼层
    应该是你的if写错了,很久没看c了忘的差不多了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2018-7-30 20:09:48 | 显示全部楼层
    熟悉的陌生人 发表于 2018-7-28 22:19
    应该是你的if写错了,很久没看c了忘的差不多了

    非常感谢你的回复
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-9 19:29
  • 签到天数: 279 天

    [LV.8]以坛为家I

    发表于 2018-8-1 15:25:52 | 显示全部楼层
    if((fp=fopen("/home/alienzhy/文档/exp01.txt","w")))
    (fp=fopen("/home/alienzhy/文档/exp01.txt","w"))这个赋值操作在fopen("/home/alienzhy/文档/exp01.txt","w")操作不错的情况下恒成立,也就是说,当成功打开了/home/alienzhy/文档/exp01.txt文件,就会执行到printf("cannot open file\n");
    你把/home/alienzhy/文档/exp01.txt改成一个不存在的文件,if条件就不成立了,就会发现报错的位置在fputc位置了。
    也就是说=号右边不出错,且=左右两边类型相同,那么=号表达式永远正确,这是在if判断经常失误的地方。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-5-17 15:04
  • 签到天数: 820 天

    [LV.10]以坛为家III

    发表于 2018-8-1 17:38:03 | 显示全部楼层
    fopen 成功打开的话,返回一个指向文件对象 FILE 的指针。否则,将返回 NULL。所以,成功打开了的话,fp是有内容的,if的条件为真。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2018-8-22 19:09:26 | 显示全部楼层
    文件打开成功,侧 printf("cannot open file\n");   
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|Ubuntu Kylin    

    GMT+8, 2018-10-18 05:38 , Processed in 0.037550 second(s), 11 queries , File On.

    Copyright ©2013-2018 Ubuntu Kylin. All Rights Reserved .

    ICP No. 15002470-2 Tianjin

    快速回复 返回顶部 返回列表