| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 494 人关注过本帖
标题:关于文件操作的问题,各位给点意见吧
只看楼主 加入收藏
kingwoeway
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-6-24
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:4 
关于文件操作的问题,各位给点意见吧
要求是这样的:
已知一个二进制数据文件中存放了10个整型数据,将他们排序后存入另一个二进制文件中。

小弟的代码如下:
程序代码:
#include <stdio.h>
#include <conio.h>
main()
{
    int  a[10], temp = 0, i = 0, j = 0, k = 0;
    char filename1[80], filename2[80];
    FILE *fp;//定义文件指针
    FILE *fp1;
    scanf("%s", filename1);//输入要读入的二进制数据文件名
    scanf("%s", filename2);//输入存放排序结果的二进制文件名

    if((fp=fopen(filename1,"rb")) == NULL)
    {
        printf("Input file open error!\n");
        return 0;
    }
    for(i=0;i<10;i++)
        fread(&a[i], sizeof(int), 1, fp);

    fclose(fp);

    

    fp1=fopen(filename2,"wb");//二进制写入文件

    for(i = 0; i < 9; i++)
    {
       fwrite(&a[i], sizeof(a), 1, fp1);
    }
    fprintf(&a[9], sizeof(a), 1, fp1);

    fclose(fp1);

    /*输出结果的代码,请不要改动*/
    if((fp1 = fopen(filename2, "rb")) == NULL)
    {
        printf("Result file open error!\n");
        exit(1);
    }

    for(i = 0; i < 10; i++)
    {
        fread(&a[i], sizeof(int), 1, fp1);       /*  读出数据 */
    }

    if( fclose(fp1))
    {
        printf("Result file close error!\n");
        exit(1);
    }

    for(i = 0; i < 9; i++)
        printf("%d ", a[i]);
    printf("%d\n", a[i]);

    return 0;
}


但是为什么运行了就死了,实在是不知道哪里出问题了。。
似乎是fread或者fwrite用得有问题,但是改了好多次,还是不行的。。
求助各位大师,不胜感激!!
搜索更多相关主题的帖子: 二进制 
2011-04-26 16:54
thunder_2011
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:100
注 册:2011-4-11
收藏
得分:5 
fprintf用错了吧
2011-04-26 17:35
kingwoeway
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-6-24
收藏
得分:0 
回复 2楼 thunder_2011
换成fwrite也不对。。
2011-04-26 18:39
kingwoeway
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-6-24
收藏
得分:0 
各位给点意见吧,。。
小弟被这个问题纠结了好久了。
2011-04-26 18:41
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:15 
程序代码:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
    int  a[10], temp = 0, i = 0, j = 0, k = 0;
    FILE *fp;//定义文件指针
    FILE *fp1;


    if((fp=fopen("message.txt","rb")) == NULL)
    {
        printf("Input file open error!\n");
        return 0;
    }
    for(i=0;i<10;i++)
        fscanf(fp,"%d",&a[i]);

    fclose(fp);

    

    fp1=fopen("message1.txt","wb");//二进制写入文件

    for(i = 0; i < 9; i++)
    {
       fprintf(fp1,"%d ",a[i]);
    }

    fclose(fp1);

    /*输出结果的代码,请不要改动*/
    if((fp1 = fopen("message1.txt", "rb")) == NULL)
    {
        printf("Result file open error!\n");
        exit(1);
    }

    for(i = 0; i < 10; i++)
    {
        fscanf(fp1,"%d",&a[i]);       /*  读出数据 */
    }

    if( fclose(fp1))
    {
        printf("Result file close error!\n");
        exit(1);
    }

    for(i = 0; i < 9; i++)
        printf("%d ", a[i]);
    printf("%d\n", a[i]);

    return 0;
}
你的两个测试文件 我用的是message.txt   message1.txt

用fscanf 和fprintf  就够了  至于你所说的排序  自己来吧

                                         
===========深入<----------------->浅出============
2011-04-26 19:16
快速回复:关于文件操作的问题,各位给点意见吧
数据加载中...
 
   



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

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