| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1322 人关注过本帖
标题:文件操作
只看楼主 加入收藏
yu965634383
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:119
专家分:195
注 册:2017-9-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
文件操作
用fwrite 想文件写入内容,用fread 将文件的内容读取出来。为什么读取到的数据总是得不到自己想要的内容,输出的时候总会有一些乱七八糟的东西
搜索更多相关主题的帖子: 文件 操作 内容 读取 输出 
2017-09-02 22:47
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
这两个函数都是处理二进制的。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-09-02 22:48
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10611
专家分:43210
注 册:2014-5-20
收藏
得分:0 
以下是引用yu965634383在2017-9-2 22:47:21的发言:

用fwrite 想文件写入内容,用fread 将文件的内容读取出来。为什么读取到的数据总是得不到自己想要的内容,输出的时候总会有一些乱七八糟的东西

具体说说是怎样读写的
2017-09-03 04:43
yu965634383
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:119
专家分:195
注 册:2017-9-1
收藏
得分:0 
回复 2楼 renkejun1942
只能用于二进制的读写吗

菜鸟一枚,求各位大神多多关照。
2017-09-03 11:00
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:5 
回复 4楼 yu965634383
https://bbs.bccn.net/thread-476985-1-1.html

你看下这个帖子,该能解答你的问题。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-09-03 12:01
yu965634383
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:119
专家分:195
注 册:2017-9-1
收藏
得分:0 
# include <stdio.h>
struct person
{
    char name[32];
    int phone[11];
    char relation[32];
};
int main (void)
{
    int i;
    struct person a , b , *p2;

    FILE *p = fopen ("person.txt" , "ab+");
    if (p == 0)
        return 0;
    p2 = &a;
    scanf ("%s" , p2->name);//因为name 是字符串,首字母就是地址,p2也是一个地址,所以这里可以省略&
    for (i = 0; i < 11; i++)
        scanf ("%d" , &a.phone[i]);
    scanf ("%s" , &a.relation );//a是变量,不是指针,需要用&;
   
    while (a.phone[0] > 0)
    {
        fwrite (p2 , sizeof (struct person) , 1 , p);
        scanf ("%s" , a.name);
        for (i = 0; i < 11; i++)
            scanf ("%d" , &a.phone[i]);
        scanf ("%s" , a.relation );
    }
    fclose (p);
    FILE * fp = fopen ("person.txt" , "rb+");
    if (fp == 0)
        return 0;
    p2 = &b;
    while (!feof (fp))
    {
        fread (p2 , sizeof (struct person) , 1 , fp);
        printf ("%s " , p2->name);
        for (i = 0; i < 10; i++)
            printf ("%d" , p2->phone[i]);
        printf ("%d " , p2->phone[i]);
        printf ("%s" , p2->relation);
        printf ("\n");
    }
    fclose (fp);
    return 0;
}
为什么最后的那个数据总会输出2次啊

菜鸟一枚,求各位大神多多关照。
2017-09-03 12:18
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10611
专家分:43210
注 册:2014-5-20
收藏
得分:8 
# include <stdio.h>
struct person
{
    char name[32];
    int phone[11];
    char relation[32];
};
int main (void)
{
    int i;
    struct person a;
    FILE *fp = fopen ("person.txt" , "ab+");
    if (fp == 0)
        return 0;
    scanf ("%s" , a.name);
    for (i = 0; i < 11; i++)
        scanf ("%d" , &a.phone[i]);
    scanf ("%s" , a.relation );
    if (a.phone[0] > 0)
    {
        fwrite (&a, sizeof (struct person) , 1 , fp);
    }
    fclose (fp);
    fp = fopen ("person.txt" , "rb");
    if (fp == 0)
        return 0;
    while (fread (&a, sizeof (struct person) , 1 , fp)==1)
    {
        printf ("%s " , a.name);
        for (i = 0; i < 10; i++)
            printf ("%d " , a.phone[i]);
        printf (" %s\n" , a.relation);
    }
    fclose (fp);
    return 0;
}
2017-09-03 14:17
yu965634383
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:119
专家分:195
注 册:2017-9-1
收藏
得分:0 
受教了

菜鸟一枚,求各位大神多多关照。
2017-09-03 14:31
yu965634383
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:119
专家分:195
注 册:2017-9-1
收藏
得分:0 
为什么不能用feof函数来判断文件的结尾呢

菜鸟一枚,求各位大神多多关照。
2017-09-03 14:43
yu965634383
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:119
专家分:195
注 册:2017-9-1
收藏
得分:0 
只要用feof函数判断文件结尾,最后输出就会多一个
while (!feof (fp))
    {
        fread (&a, sizeof (struct person) , 1 , fp);
        printf ("%s " , a.name);
        for (i = 0; i < 10; i++)
            printf ("%d" , a.phone[i]);
        printf ("%d " , a.phone[i]);
        printf (" %s\n" , a.relation);
    }
最后的一个会重复是什么原因啊

菜鸟一枚,求各位大神多多关照。
2017-09-03 14:51
快速回复:文件操作
数据加载中...
 
   



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

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