| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 691 人关注过本帖
标题:为啥fopen一直打开文件失败
只看楼主 加入收藏
逆丶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-2-18
结帖率:25%
收藏
已结贴  问题点数:18 回复次数:9 
为啥fopen一直打开文件失败
int main()
{
    FILE *fp1,*fp2;
    char c;

    if((fp1=fopen("file1.txt","w"))==NULL);
    {
        printf("打开文件失败");
        exit(0);
    }
    printf("请输入字符");
    while((c=getchar())!='\n')
    {
        fputs(c,fp1);
        fclose(fp1);
        if((fp2=fopen("file1.txt","r"))==NULL)
        {
            printf("打开文件失败");
            exit(0);
        }

    }
    printf("输出字符\n");
    while((c=putchar(fp2))!=EOF)
    {
        putchar(c);
        printf("\n");
        fclose(fp2);
    }
}
这是代码!求解答。。。。
2012-02-22 22:47
逆丶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-2-18
收藏
得分:0 
在线等。。。。
2012-02-22 22:57
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
一般很罕见把 fopen 或者 fclose 放在循环里面的。
2012-02-22 23:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
你覺得這樣重複打開同一個文件會成功?

授人以渔,不授人以鱼。
2012-02-22 23:02
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
你是想读一个字符,然后写到一个文件里。回头再读那个文件,把刚才存的字符输出来吗?
2012-02-22 23:03
逆丶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-2-18
收藏
得分:0 
回复 5楼 pangding
对哦。。找到问题原因了,是在if后面不小心打了个分号。。。真是蛋疼。。不过程序本身还是有错误。。。求指点
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    FILE *fp1,*fp2;
    char c;
    if((fp1=fopen("file1.txt","w"))==NULL)
    {
        printf("打开文件失败");
        exit(0);
    }
    printf("请输入字符");
    while((c=getchar())!='\n')
    {
        fputc(c,fp1);
        fclose(fp1);
        if((fp2=fopen("file1.txt","r"))==NULL)
        {
            printf("打开文件失败");
            exit(0);
        }
    }
    printf("输出字符\n");
    while((c=fgetc(fp2))!=EOF)
    {
        putchar(c);
        printf("\n");
        fclose(fp2);
    }
}
这是改过之后的。。只可以输出1个字符。


[ 本帖最后由 逆丶 于 2012-2-22 23:10 编辑 ]
2012-02-22 23:05
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
我看也只能读一个字符。你那个 while 里一进去就把 fp1 close 了,你靠什么再往里写呀?
2012-02-22 23:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 7楼 pangding
你沒仔細看他的代碼是怎麼寫的吧?我看他連自己要做的操作的細節都沒搞清楚,就亂寫一氣。

授人以渔,不授人以鱼。
2012-02-22 23:36
q1314255809
Rank: 2
等 级:论坛游民
帖 子:3
专家分:14
注 册:2012-2-23
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp1,*fp2;
    char c;
    char cc[2]={0};

    if((fp1=fopen("file1.txt","w"))==NULL)
    {
        printf("打开文件失败");
        exit(0);
    }
    printf("请输入字符");
    while((c=getchar())!='\n')
    {
        *cc = c;
        fputs(cc,fp1);   
    }
    fclose(fp1);

    if((fp2=fopen("file1.txt","r"))==NULL)
    {
        printf("打开文件失败");
        exit(0);
    }
    printf("输出字符\n");
    while((c=fgetc(fp2))!=EOF)
    {
        putchar(c); 
    }
    printf("\n");
    fclose(fp2);
   
}
按照原来的代码进行了大方面的修改,当前代码经过调试可用。
楼主基础貌似不太好,有很多地方搞错了的,具体是哪里就要楼主对照着原版来自己找吧!!
2012-02-23 11:38
sqchuan911
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2012-2-23
收藏
得分:5 

int main()
{
    FILE *fp1,*fp2;
    char c;
   
    if((fp1=fopen("file1.txt","w"))==NULL)
    {
        printf("打开文件失败");
        exit(0);
    }
    printf("请输入字符:");

    //输入字符到文件
    while((c=getchar())!='\n')
    {
        fputc(c,fp1);
        
    }
    fclose(fp1);

    //从文件输出字符
    if((fp2=fopen("file1.txt","r"))==NULL)
    {
        printf("打开文件失败");
        exit(0);
    }
    printf("输出字符:\n");
    while((c=fgetc(fp2))!=EOF)
    {
        putchar(c);
    }
    printf("\n");
    fclose(fp2);
}   
调试过了的程序,基本没动
2012-02-23 13:34
快速回复:为啥fopen一直打开文件失败
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027531 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved