| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 544 人关注过本帖
标题:文件读取,在屏上打印,打完信息多打很多乱码?
只看楼主 加入收藏
gu_mingren
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
文件读取,在屏上打印,打完信息多打很多乱码?
大家好,我是菜鸟C_er,刚学C语言不久,今天写一个学生信息管理程序,保存部分以及输出打印部分代码如下
主函数调用new_file(),new_file()调用save(),主函数再调用browse().
输入信息:1001,gmr,M,21,jiangxi   
打印结果:NO.1 1001,gmr ,M,21,jiangxi,i,1769498478,
请高手指点这是为什么?以及应怎样改才能正常显示?
N 是定义的一个常量,表示学生的个数。
以下是定义struct student型数据
struct student      
{long int number;
char name[10];
char sex;
int age;
char addr[20];
int yuwen;
int shuxue;
int sum;
};
struct student stu[N];

void new_file()           
{    void save();
    int i;
    for (i=0;i<N;i++)
    scanf("%ld,%s,%c,%d,%s",&stu[i].number,stu[i].name,&stu[i].sex ,&stu[i].age ,stu[i].addr);
    save();                  
    printf("保存成功!");
}

void save()
{FILE *fp;
    int i;
    if ((fp=fopen("student1.dat","wb"))==NULL)  
    {printf("文件打开失败!\n");
    return;
    }
    for (i=0;i<N;i++)
            if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
                {printf("写入失败!\n");
                return;
                }
                fclose(fp);
}



void browse()    //查看
{
printf("以下是学生信息\n");
int i;
FILE *fp;
if ((fp=fopen("student1.dat","rb"))==NULL)
    {printf("文件打开失败!\n");
    return;
    }
for (i=0;i<N;i++)
    {fseek(fp,i*sizeof(struct student),0);
    fread(&stu[i],sizeof(struct student),1,fp);
    printf("%d %ld,%s,%c,%d,%s\n",i+1,stu[i].number,stu[i].name,stu[i].sex ,stu[i].age ,stu[i].addr);
    }
    fclose(fp);
    return;
}


搜索更多相关主题的帖子: 信息 管理程序 number C语言 
2011-11-26 15:40
mfh
Rank: 6Rank: 6
等 级:侠之大者
帖 子:179
专家分:411
注 册:2009-5-31
收藏
得分:20 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 1
struct student      
{
        long int number;
        char name[10];
        char sex;
        int age;
        char addr[20];
        int yuwen;
        int shuxue;
        int sum;
};
struct student stu[N];
void new_file()         
{
    void save();
    int i;
   
    for (i=0;i<N;i++)
        fscanf(stdin,"%ld %s %c %d %s",&stu[i].number,&stu[i].name,&stu[i].sex ,&stu[i].age ,&stu[i].addr);//--------------------KEY
    for (i=0;i<N;i++)
    {
        printf("%d %ld,%s,%c,%d,%s\n",i+1,stu[i].number,stu[i].name,stu[i].sex ,stu[i].age ,stu[i].addr);
    }
   
    save();                  
    printf("保存成功!");
}
void save()
{
    FILE *fp;
    int i;
    if ((fp=fopen("student1.dat","wb"))==NULL)
    {
        printf("文件打开失败!\n");
        return;
    }
    for (i=0;i<N;i++)
            if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
            {
                printf("写入失败!\n");
                return;
            }
                fclose(fp);
}

void browse()    //查看
{
printf("以下是学生信息\n");
int i;
FILE *fp;
if ((fp=fopen("student1.dat","rb"))==NULL)
    {printf("文件打开失败!\n");
    return;
    }
for (i=0;i<N;i++)
    {
        fseek(fp,i*sizeof(struct student),0);
        fread(&stu[i],sizeof(struct student),1,fp);
        printf("%d %ld,%s,%c,%d,%s\n",i+1,stu[i].number,stu[i].name,stu[i].sex ,stu[i].age ,stu[i].addr);
    }
    fclose(fp);
    return;
}

int main()
{
      
        int i ;
      
        for(i =0 ;i< N ;i++)
                memset( &stu[i],0,sizeof(stu[i]));
        new_file();
        browse();
      
        return 0;
}
2011-11-26 16:22
mfh
Rank: 6Rank: 6
等 级:侠之大者
帖 子:179
专家分:411
注 册:2009-5-31
收藏
得分:0 
在输入时,不同的分隔符会有不同的结果,会带入一些其他参数。
2011-11-26 16:27
gu_mingren
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-26
收藏
得分:0 
感谢楼上,问题确是如此!!谢谢!还请以后多多指教!
2011-11-26 18:51
快速回复:文件读取,在屏上打印,打完信息多打很多乱码?
数据加载中...
 
   



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

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