标题:文件读入和保存的问题,请高手帮忙看看,新人学习
只看楼主
ice_callous
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-10-14
结帖率:60%
 问题点数:0 回复次数:5 
文件读入和保存的问题,请高手帮忙看看,新人学习
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<conio.h>

#define OK 1
#define null 0
#define error 0
#define OVERFLOW 0
#define LIST_INTT_SIZE 10000
#define LISTINCREMENT 10   

struct student
{
    char  name[20];
    long int  number;
    int   age;
    float score;
};

typedef int status;

typedef student elemtype;



typedef struct
{
    elemtype *elem;
    int length;
    int  listsize;
}sqlist;


status initlist_sq(sqlist &L)
{
    L.elem=(elemtype*)malloc(1000*sizeof(elemtype));
    if(!L.elem)
        exit(OVERFLOW);
    L.length=0;
    L.listsize=LIST_INTT_SIZE;
    return OK;
}


void datain_sq(sqlist &L)
{
    long int num;
    int i=0;
    do  /*输入学号*/
    {
        printf("请输入该学生的学号:(以输入0结束!)\n");
        scanf("%ld",&num);
    }while(num<0);
    while(num!=0)
    {
        printf("请输入该学生的姓名:\n");
        scanf("%s",L.elem[i].name);
        printf("请输入该学生的年龄:\n");
        scanf("%d",&L.elem[i].age);
        printf("请输入该学生的总分:\n");
        scanf("%f",&L.elem[i].score);
        L.elem[i].number=num;
        i++;
        L.length++;
        do
        {
            printf("请输入该学生的学号:(以输入0结束!)\n");
            scanf("%ld",&num);
        }while(num<0);
    }
}

void fileread(sqlist &L)
{
    char *filename;
    filename=(char *)malloc(sizeof(char));
    int i=0;
    FILE *stu;
    fflush(stdin);
    printf("请输入你要读取文件的名字!\n");
    gets(filename);
    filename=strcat(filename,".txt");
    stu=fopen("filename","r");
    if(stu==NULL)
        printf("文件中没有任何信息,请先存入信息!\n");
    else
    {
        while(!feof(stu))
        {
            fscanf(stu,"%s%ld%d%.2f",L.elem[i].name,&L.elem[i].number,&L.elem[i].age,&L.elem[i].score);
            i++;
            L.length++;
        }
    }
    fclose(stu);
}
         

void filesave(sqlist &L)
{
    char *filename;
    FILE *stu;
    int i=0;
    filename=(char *)malloc(sizeof(char));
    fflush(stdin);
    printf("请输入你要读取文件的名字!\n");
    gets(filename);
    filename=strcat(filename,".txt");
    stu=fopen("filename","w");
    do
    {
        fprintf(stu,"%s%ld%d%.2f",L.elem[i].number,L.elem[i].age,L.elem[i].score);
        i++;
        L.length--;
    }while(L.length);
}

void main()
{
    sqlist myL;
    initlist_sq(myL);
    int n;
    printf("1.从键盘读入数据\n2.从文件读入数据\n3.保存数据到文件\n")
a:printf("请选择:");
    scanf("%d",&n);
    switch(n)
    {
        case 1: datain_sq(myL);break;
        case 2: fileread(myL);break;
        case 3: filesave(myL);break;
        default : printf("输入错误");
    }
    goto a;
}
不知道错在哪里,请高手帮帮忙
搜索更多相关主题的帖子: null 
2010-12-26 20:13
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
fprintf(stu,"%s %ld %d %.2f",L.elem[i].name,L.elem[i].number,L.elem[i].age,L.elem[i].score);
2010-12-27 19:28
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
    char *filename;

     filename=(char *)malloc(20*sizeof(char)); 根据情况给个长度
 
    fclose(stu);
2010-12-27 19:29
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
stu=fopen(filename,"w");
filename 不要加双引号
2010-12-27 19:30
ice_callous
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-10-14
得分:0 
回复 4楼 寒风中的细雨
非常感谢!!!
2010-12-27 22:27
ice_callous
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-10-14
得分:0 
回复 5楼 ice_callous
还有个问题,文件在读时会出现乱码,应该怎么办?
2010-12-27 22:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-329975-1-1.html




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

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