| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1733 人关注过本帖
标题:请高手解答一下,为什么我打印出来的,总是两个相同的数据
只看楼主 加入收藏
依旧我心
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2018-3-1
结帖率:0
收藏
 问题点数:0 回复次数:2 
请高手解答一下,为什么我打印出来的,总是两个相同的数据
为什我输入一个数据后,再打印,出现两个一模一样的数所,比如,我输入,学号:1001 姓名 aaa,打印出为居然是两个1001 aaa,1001 aaa这是为什么,我看讲课上老师打出来的是一个啊,同样是保存再加载。代码如下:
#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
void SaveData();
struct MyStud
{
    int iNum;
    char cName[10];
};
typedef MyStud Data;

struct Node
{
    Data data;
    Node *pNext;
};

Node *pHead = NULL;

void Addtail(Data data)
{
    Node *pNew;
    pNew = (Node*)malloc(sizeof(Node));
    pNew->data = data;
    if (!pHead)
    {
        pHead = pNew;
        pNew->pNext = NULL;
        return;
    }
    Node *p = pHead;
    while (p->pNext)
    {
        p = p->pNext;
    }
    p->pNext = pNew;
    pNew->pNext = NULL;
}

void disPlay()
{
    Node *p=pHead;
    if(!p)
    {
        puts("该系统无数据,请添加学生信息");
        return;
    }
    while (p)
    {
        printf("%d%s", p->data.iNum, p->);
        p = p->pNext;
    }
}

void AddHead(Data data)
{
    Node *pNew;
    pNew=(Node*)malloc(sizeof(Node));
    pNew->data = data;
    pNew->pNext = pHead;
    pHead = pNew;
}
void InputData()
{
    Data data;
    puts("请输入学号");
    scanf("%d", &data.iNum);
    puts("请输入姓名");
    scanf("%s", );
    AddHead(data);
    disPlay();
    SaveData();
}



void SaveData()
{
    Node *p = pHead;
    FILE *pf = fopen("d:\\1.txt", "w");
    if (!pf)
    {
        puts("打开文件失败");
        return;
    }
    while (p)
    {
        fwrite(p, 1, sizeof(p->data), pf);
        p = p->pNext;
    }
    fclose(pf);
}
void LoadData()
{
    Data data;
    Node  *p = pHead;
    FILE *pf = fopen("d:\\1.txt", "r");
    if (!pf)
    {
        puts("打开文件失败");
        return;
    }
    while (fread(&data,1,sizeof(data),pf)== sizeof(data))
    {
        AddHead(data);
    }
    fclose(pf);
}
int main()
{
    int seleNum;
    do
    {
        puts("1.浏览信息");
        puts("2.添加学员信息");
        puts("请输入你的选择");
        scanf("%d", &seleNum);
   
        switch (seleNum)
        {
        case 1: LoadData();
            disPlay();
            break;
        case 2:InputData();
            break;
        case 3: medify();
            break;
        case 4: DeleteData();
            break;
        case 0:
        default:
            puts("你输入有误,请重新输入");
            break;
        }
    } while (seleNum!=0);
    return 0;
}
搜索更多相关主题的帖子: 输入 void Data Node puts 
2018-05-27 22:04
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
InputData 添加一个数据
LoadData 再添加一个数据
输出两个数据没毛病

https://zh.
2018-05-27 22:32
依旧我心
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2018-3-1
收藏
得分:0 
那这个应该怎么改,我看视频中老师这么写,却没有输出两个数据。
2018-05-28 06:46
快速回复:请高手解答一下,为什么我打印出来的,总是两个相同的数据
数据加载中...
 
   



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

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