标题:实在不知道问题出在哪,请大家帮我看看
只看楼主
ujszmc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-26
结帖率:100%
 问题点数:0 回复次数:8 
实在不知道问题出在哪,请大家帮我看看
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{
    FILE *f1;
    char *f2;
    char s[100];
    long length;
    char mode;

    if ((f1 = fopen("infomation.txt", "r+")) == NULL)
    {
        printf("Can't open file.\n");
        exit(EXIT_FAILURE);
    }
    fseek(f1, 0, SEEK_END);
    length = ftell(f1);
    f2 = (char*)malloc(sizeof(char)*length);

    rewind(f1);
    while (fgets(s, 100, f1) != NULL)
    {
        printf("%s\n", s);
        printf("d or c or u?\n");
        if ((mode = getchar()) == 'u')
            strcat(f2, s);
        else if (mode == 'c')
        {
            printf("Enter new information.\n");
            fgets(s, 100, stdin);
            strcat(f2, s);
        }
        else if (mode == 'd')
            continue;
        while (getchar() != '\n');
    }

    printf("success.\n");    //第一个success可以显示
    if (fclose(f1) != 0)
    {
        printf("Close failed.\n");
        exit(EXIT_FAILURE);
    }
    printf("success.\n");  //第二个success不可以显示
    if ((f1 = fopen("infomation.txt", "w+")) == NULL)
    {
        printf("Can't open file.\n");
        exit(EXIT_FAILURE);
    }
    fputs(f2, f1);
    fclose(f1);
    return 0;
}

我觉得问题可能出在fclose(f1);但是,实在看不出来有什么问题


[ 本帖最后由 ujszmc 于 2015-5-13 11:23 编辑 ]
搜索更多相关主题的帖子: include file 
2015-05-13 11:15
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
把文件发出来

DO IT YOURSELF !
2015-05-13 11:25
ujszmc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-26
得分:0 
回复 2楼 wp231957
infomation.rar (493 Bytes)

这就是我自己随便写的一个文件
2015-05-13 11:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
处处透着错误和古怪的代码,算了,不说。

strcat(f2, s); 要求 f2 是个以'\0'结尾的字符串,但你的代码中f2……
2015-05-13 12:28
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
文件看到了 你的目的呢

DO IT YOURSELF !
2015-05-13 13:49
ujszmc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-26
得分:0 
回复 4楼 rjsp
初学c,水平有限,让你见笑了。
这个程序目的是从文件information.txt中一行一行读取内容,然后显示到屏幕上并询问用户删除(d)该行,不变(u),还是改变(c)该行内容。
我不想创建临时文件,所以想了这么个办法,先存到f2指向的内存中,然后在输出到原文件中。
既然,strcat(f2,s);不能用,那还有什办法把数据追加到f2指向的内存中呢?
2015-05-13 18:32
ujszmc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-26
得分:0 
回复 5楼 wp231957
目是什么?菜鸟不懂
2015-05-13 18:34
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
你这个涉及到文件的修改  需要定位  不是几句代码能搞定的东东  

慢慢研究吧

DO IT YOURSELF !
2015-05-14 09:12
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
回复 7楼 ujszmc
太逗了。目是什么?

总有那身价贱的人给作业贴回复完整的代码
2015-05-14 09:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445242-1-1.html




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

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