| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2318 人关注过本帖
标题:求助~数据块文件读写之后变成乱码怎么办
取消只看楼主 加入收藏
不要做咸鱼
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-3-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
求助~数据块文件读写之后变成乱码怎么办
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

typedef struct patient
{
    char id[20];
    char name[20];
    char sex[5];
    int age,year,month,day;
    char cases[200];
    char consumption[20];
    struct patient *next;
}PATIENT;

PATIENT * Input_Patient();
void Save_Patient(PATIENT *head);
void Find_Patient();


int main()
{
    PATIENT *h;
    h=Input_Patient();
    Find_Patient();
    return 0;
}

PATIENT * Input_Patient()
{
    PATIENT *p1,*p2,*head;
    int flag=1,x;

    head=(PATIENT *)malloc(sizeof(PATIENT));
    p1=head;
    while(flag==1)
    {
        p2=(PATIENT *)malloc(sizeof(PATIENT));
        printf("请输入病人ID:");
        scanf("%s",p1->id);
        printf("请输入病人姓名:");
        scanf("%s",p1->name);
        printf("请输入病人性别:");
        scanf("%s",p1->sex);
        printf("请输入病人年龄:");
        scanf("%d",&p1->age);
        printf("请输入病人入院时间(年/月/日):");
        scanf("%d%d%d",&p1->year,&p1->month,&p1->day);
        printf("请输入病人病例:");
        scanf("%s",p1->cases);
        printf("请输入病人消费情况:");
        scanf("%s",p1->consumption);
        p1->next=p2;
        p1=p2;
        printf("继续输入病人信息请按 1:");
        scanf("%d",&flag);
    }
    p2->next=NULL;
    printf("病人信息输入结束!\n是否保存病人信息?(1.是/2.否)\n");
    scanf("%d",&x);
    if(x==1)
        Save_Patient(head);
    ///else
        ///Main_Patient();
    return head;
}
void Save_Patient(PATIENT *head)
{
    PATIENT *p;
    FILE *fp;
    if((fp=fopen("patient","a"))==NULL)
    {
        printf("打开文件过程出现错误!\n");
        ///Main_Patient();
    }
    for(p=head->next;p!=NULL;p=p->next)
        fwrite(p,sizeof(PATIENT),1,fp);
    fclose(fp);
    printf("病人信息已存入!\n");
}
void Find_Patient()
{
    PATIENT *p;
    FILE *fp;
    int x;
    char id[20],name[20];

    p=(PATIENT *)malloc(sizeof(PATIENT));

    printf("请选择你要使用的查找方式:\n");
    printf("1.通过ID查找\n");
    printf("2.通过姓名查找\n");
    scanf("%d",&x);
    if(x==1)
    {
        printf("\n请输入病人ID:");
        scanf("%s",id);
        if((fp=fopen("patient","r"))==NULL)
        {
            printf("打开文件过程中出现错误!\n");
            exit(0);
        }
        while(!feof(fp))
        {
            fread(p,sizeof(PATIENT),1,fp);
            if(strcmp(p->name,name)==0)
            {
                printf("ID:%s\n姓名:%s\n性别:%s\n年龄:%d\n",p->id,p->name,p->sex,p->age);
                printf("入院时间:%02d/%02d/%02d\n病例:%s\n消费情况:%s\n",p->year,p->month,p->day,p->cases,p->consumption);
            }
        }
        fclose(fp);
    }
    else if(x==2)
    {
        printf("\n请输入病人姓名:");
        scanf("%s",name);
        if((fp=fopen("patient","r"))==NULL)
        {
            printf("打开文件过程中出现错误!\n");
            exit(0);
        }
        while(!feof(fp))
        {
            fread(p,sizeof(PATIENT),1,fp);
            if(strcmp(p->name,name)==0)
            {
                printf("ID:%s\n姓名:%s\n性别:%s\n年龄:%d\n",p->id,p->name,p->sex,p->age);
                printf("入院时间:%02d/%02d/%02d\n病例:%s\n消费情况:%s\n",p->year,p->month,p->day,p->cases,p->consumption);
            }
        }
        fclose(fp);
    }
}


[此贴子已经被作者于2018-3-12 20:55编辑过]

搜索更多相关主题的帖子: name head printf 输入 scanf 
2018-03-12 16:15
不要做咸鱼
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-3-5
收藏
得分:0 
回复 2楼 吹水佬
谢谢,但是还是不对
2018-03-12 17:06
不要做咸鱼
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-3-5
收藏
得分:0 
回复 7楼 lanke711
啊应该是fwrite,改的次数有点多都改乱了。。
2018-03-12 20:34
不要做咸鱼
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-3-5
收藏
得分:0 
回复 10楼 lanke711
谢谢谢谢谢谢
2018-03-16 13:30
快速回复:求助~数据块文件读写之后变成乱码怎么办
数据加载中...
 
   



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

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