标题:txt文档写入问题。自学C不为期末作业。。。。。
只看楼主
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
得分:0 
谢谢大家了  虽然问题没解决 我还是重新看好基础概念再来吧。

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-30 12:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
char name;
你说这个声明有什么问题?

授人以渔,不授人以鱼。
2011-12-30 12:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
等会我写两个函数你使用,读和写的。

授人以渔,不授人以鱼。
2011-12-30 12:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>
#include <conio.h>

typedef struct _student
{
    char  clas[20];            /*班级*/
    int   number;            /*学号*/
    char  name[20];            /*姓名*/
    float clan;                /*C语言成绩*/
    float english;            /*大学英语成绩*/
    float math;                /*高等数学成绩*/
    float sum;                /*总分*/
    float adver;            /*平均分*/
} Student;

const char fileName[] = "Students.DAT";

bool SaveData(Student* stu);
bool LoadData(Student* stu, const int maxNumber);
void ShowData(Student* stu);

void main(void)
{
    Student stu[50] = {
        { "中文10(1)", 1, "张三丰", 80.5, 70.0, 92.5 },
        { "中文10(1)", 2, "丘处机", 77.0, 60.0, 95.0 },
        { NULL }
    };

    SaveData(stu);
    strcpy(stu[0].name, "梅超风");
    LoadData(&stu[2], 1);
    ShowData(stu);

    _getch();
}

bool SaveData(Student* stu)
{
    FILE* file;

    if ((file = fopen(fileName, "wb")) == NULL)
    {
        return false;
    }

    while (*stu->clas)
    {
        fwrite((void *)stu, sizeof(*stu), 1, file);
        ++stu;
    }
    fclose(file);

    return true;
}

bool LoadData(Student* stu, const int maxNumber)
{
    FILE* file;
    int counter = 0;

    if ((file = fopen(fileName, "rb")) == NULL)
    {
        return false;
    }

    while (!feof(file) && (counter++ < maxNumber))
    {
        fread(stu, sizeof(*stu), 1, file);
        ++stu;
    }
    fclose(file);
    *stu->clas = NULL;

    return true;
}

void ShowData(Student* stu)
{
    while (*stu->clas)
    {
        printf("班级: %-20s\n", stu->clas);
        printf("学号: %04d\n", stu->number);
        printf("姓名: %-20s\n", stu->name);
        printf("C语言: %6.2f\n", stu->clan);
        printf("英语: %6.2f\n", stu->english);
        printf("高数: %6.2f\n", stu->math);
        printf("\n");
        ++stu;
    }
}

运行效果:


[ 本帖最后由 TonyDeng 于 2011-12-30 13:38 编辑 ]

授人以渔,不授人以鱼。
2011-12-30 12:59
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
得分:0 
额,确实一团乱,scanf里面还有字符串的时候,不要用什么逗号或者空格号跟随,这是不正确的
每项功能用每个函数完成,都分开写,最好功能独立,全局变量弄少点,建议用链表做这个任务,名字什么的我就不说了,绝对要用字符数组撒,你怎么都是单个字符
main()函数怎么可以被调来调去的,我知道你想弄成菜单项,那你就独立写个专门显示菜单的函数呗
如果用数组做,记得初始化,为以后的输入输出删除做准备
https://bbs.bccn.net/thread-335558-1-1.html
以前的帖子,可以看下怎么设计的

我的地盘
2011-12-30 14:11
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
得分:0 
好的 我看看

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-30 17:48
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
得分:0 
看来没有老师指导C语言的写法 很容易写不规范的。。。我就是这样。哎 规范的东西反而看不懂了

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-30 18:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
看明白了没有?要解释么?

授人以渔,不授人以鱼。
2011-12-30 19:46



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




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

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