| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 365 人关注过本帖
标题:之前那个问题,现在细说一下,请大家再看一下
只看楼主 加入收藏
tpengti
Rank: 2
等 级:论坛游民
帖 子:75
专家分:18
注 册:2010-5-9
结帖率:65.22%
收藏
已结贴  问题点数:20 回复次数:3 
之前那个问题,现在细说一下,请大家再看一下
#include <stdio.h>
#include <string.h>
#include <conio.h>  


struct yonghu {                                                     /*个人注册信息*/  
    char name[8];
    char sex[4];
    char cla[20];
}stud, student[100];
void save()
{
    FILE *ip;   
    if((ip = fopen("student3.txt","a+")) == NULL)
    {
        printf("不能打开这个文件\n");   return;  
    }  
    if(fwrite(&stud,sizeof(struct yonghu),1,ip) != 1)  
        
        printf("信息写入错误!"); fprintf(ip,"\n"); fclose(ip);     
}  
void du()
{
    FILE *fp;
    int i=0,w,d;
    if((fp = fopen("student3.txt","r+")) == NULL)
    {
        printf("不能打开这个文件\n");   return;
    }
    while(!fp)
    {
        fread(&student[i],sizeof(struct yonghu),1,fp); i++;
    }
   
    for (d = 0; d <= 14; d++)
    {
        printf("%s\t%s\t%s",student[d].name[8], student[d].sex[4], student[d].cla[20]);
        printf("\n");
    }   
}  
int main()
{  
    int d;
    scanf("%s%s%s", stud.name, stud.sex, stud.cla);  
    save();   
    du();  
    return 0;
}
//我想实现从文件中读取数据都结构体数组中,而文件中的每一行就是一个人的数据(相应的存到一个数组student[0]里面,第二行的信息就放到student[1]中,而这些数组也是结构体类型)
我这个不知道怎么回事,就是实现不了,大家帮忙看看!




[ 本帖最后由 tpengti 于 2010-12-25 15:43 编辑 ]
搜索更多相关主题的帖子: include return 信息 
2010-12-25 15:41
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:20 
程序:
程序代码:
#include <stdio.h>
#include <string.h>
#include <conio.h> 
#define SIZE 10
struct yonghu {                                                     /*个人注册信息*/ 
    char name[8];
    char sex[4];
    char cla[20];
}stud, student[100];
void save()
{
    FILE *ip;  
    if((ip = fopen("student3.txt","a+")) == NULL)
    {
        printf("不能打开这个文件\n");   return; 
    } 
    if(fwrite(&stud,sizeof(struct yonghu),1,ip) != 1) 
        printf("信息写入错误!");
    fclose(ip);    
} 
void du()
{
    FILE *fp;
    int i=0,w,d;
    if((fp = fopen("student3.txt","rb+")) == NULL)
    {
        printf("不能打开这个文件\n");   return;
    }
    for(i=0;fread(&student[i],sizeof(struct yonghu),1,fp)>0;i++)
    {
        i++;
    }
   
    for (d = 0; d < i; d++)
    {
        printf("%s\t%s\t%s",student[d].name,student[d].sex,student[d].cla);
        printf("\n");
    }  
} 
int main()
{ 
    int d;
    scanf("%s%s%s", stud.name, stud.sex, stud.cla); 
    save();  
    du(); 
    return 0;
}
结果:
图片附件: 游客没有浏览图片的权限,请 登录注册


Go Go Go
2010-12-25 17:38
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:0 
首先你的程序在保存的时候只能保存一次,这个我没改建议你用循环可以保存多个,我的结果是往文件里写入了四次 呵呵。
图片附件: 游客没有浏览图片的权限,请 登录注册
这个我去掉了,因为这个会影响到后面的输出
图片附件: 游客没有浏览图片的权限,请 登录注册

输出的时候直接后跟数组的首地址就行了不要这样写。

这个有点问题条件里面永远为假,所以我做了下修改。
问题与那个二进制读写文件有关你看看书。
结果是出来了,不过还有点就是文件里面不是一个学生信息就换行,直接往后写的,你在优化下。

Go Go Go
2010-12-25 17:48
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:0 
还有那个预处理的那个宏是没有用的我忘了擦掉了 不过不会影响程序的

Go Go Go
2010-12-25 19:43
快速回复:之前那个问题,现在细说一下,请大家再看一下
数据加载中...
 
   



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

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