| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 508 人关注过本帖
标题:关于文件 图书信息删除
只看楼主 加入收藏
曼珠沙华
Rank: 2
来 自:广东
等 级:论坛游民
帖 子:121
专家分:98
注 册:2009-5-21
结帖率:100%
收藏
 问题点数:0 回复次数:2 
关于文件 图书信息删除
void delete_book()
{
    FILE *fp1,*fp2;
    books b;
    char name[10],ch;

    fp1 = fopen("e:\\proj\\books.dat", "rb");
    fp2 = fopen("e:\\proj\\books1.dat", "wb");

    printf("\n================欢迎进入图书删除系统===============\n");
    printf("请输入你要删除的书名:");
    scanf("%s",name);
    printf("如果你输入的书名存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");

    while( ! feof(fp1) )
    {
        fread(&b, sizeof(books),1,fp1);
        if( strcmp(name,b.book_name) != 0 )        //把图书名不同的写入文件books1
        {
            fwrite( &b,sizeof(books),1,fp2);
            break;
        }
    }
    fclose(fp1);
    fclose(fp2);

    printf("是否真的要删除该书籍?删除后信息将无法恢复 Y/N :");
    getchar();
    scanf( "%c", &ch);

    if( ch == 'y' || ch == 'Y' )
    {
        fp1 = fopen("e:\\proj\\books.dat", "wb");
        fp2 = fopen("e:\\proj\\books1.dat", "rb");
        while( ! feof(fp2) )
        {
            fread( &b,sizeof(books),1,fp2 );
            fwrite( &b,sizeof(books),1,fp1 );
        }
        fclose(fp1);
        fclose(fp2);
        fp2 = fopen("e:\\proj\\books1.dat","wb");
        fclose(fp2);
        printf("按任意键返回\n");
        getch();
        return;
    }
    else
    {
        printf("按任意键返回\n");
        getch();
        return;
    }
}

请问各位大虾,这段代码错在哪里,谢谢~~~~

我出现的问题是,运行这个代码删除我要的信息时,把其他信息也一起删除了除了第二个,但是第二个却是被复制了一遍。。。

请指出错在哪里。。。谢谢。。。
搜索更多相关主题的帖子: 文件 图书 删除 
2010-01-17 00:27
曼珠沙华
Rank: 2
来 自:广东
等 级:论坛游民
帖 子:121
专家分:98
注 册:2009-5-21
收藏
得分:0 
void delete_book()
{
    FILE *fp1,*fp2;
    books b;
    char name[10],ch;

    fp1 = fopen("e:\\proj\\books.dat", "rb");
    fp2 = fopen("e:\\proj\\books1.dat", "wb");

    printf("\n================欢迎进入图书删除系统===============\n");
    printf("请输入你要删除的书名:");
    scanf("%s",name);
    printf("如果你输入的书名存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");

    while( ! feof(fp1) )
    {
        fread(&b, sizeof(books),1,fp1);
        if( strcmp(name,b.book_name) != 0 )        //把图书名不同的写入文件books1
        {
            fwrite( &b,sizeof(books),1,fp2 );
        }
    }
    fclose(fp1);
    fclose(fp2);

    printf("是否真的要删除该书籍?删除后信息将无法恢复 Y/N :");
    getchar();
    scanf( "%c", &ch);

    if( ch == 'y' || ch == 'Y' )
    {
        fp1 = fopen("e:\\proj\\books.dat", "wb");
        fp2 = fopen("e:\\proj\\books1.dat", "rb");
        while( ! feof(fp2) )
        {
            fread( &b,sizeof(books),1,fp2 );
            fwrite( &b,sizeof(books),1,fp1 );
        }
        fclose(fp1);
        fclose(fp2);
        fp2 = fopen("e:\\proj\\books1.dat","wb");
        fclose(fp2);
        printf("按任意键返回\n");
        getch();
        return;
    }
    else
    {
        printf("按任意键返回\n");
        getch();
        return;
    }
}

修改之后的,可是还是有错误。。。
删除了自己想删除的图书之后,却把最后一本图书复制一遍了。。。

走过了,却留下了痕迹。伤过了,却是一种无奈。人生只不过是一种擦肩而过的过程。
2010-01-17 01:42
曼珠沙华
Rank: 2
来 自:广东
等 级:论坛游民
帖 子:121
专家分:98
注 册:2009-5-21
收藏
得分:0 
问题已解决。。。。

走过了,却留下了痕迹。伤过了,却是一种无奈。人生只不过是一种擦肩而过的过程。
2010-01-17 14:48
快速回复:关于文件 图书信息删除
数据加载中...
 
   



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

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