| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7116 人关注过本帖
标题:C语言 读文件进链表 显示有多余的 屯屯屯屯屯屯
只看楼主 加入收藏
中午的星星
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-6-29
结帖率:33.33%
收藏
 问题点数:0 回复次数:7 
C语言 读文件进链表 显示有多余的 屯屯屯屯屯屯
#include<stdio.h>
#include<stdlib.h>
#include<fstream>
using namespace std;

struct students
{
    char no[20];
    char name[20];
    char score;
    struct students *next;
   
};
int main(){
   
    FILE *fp=NULL;
    students *p,*p1;
    students *head;
    head = (students *)malloc(sizeof(students));
    head->next = NULL;
    if((fp = fopen("student.txt","rb"))==NULL)
    {
        printf("cannot open flie\n");
        return 0;
    }
    while(!feof(fp))
    {
        p = (students *)malloc(sizeof(students));
        fread(p,sizeof(students),1,fp);
        
        
        if(head==NULL) {
            head=p;
            p->next=NULL;
        }
        else{
            p1=head;
            while(p1->next!=NULL){
                p1=p1->next;
            }
        }
        

        p1->next = p;
        p->next = NULL;
        
    }
    fclose(fp);
   
    while (head != NULL) //输出链表中内容,验证数据已经写入到链表
    {
        printf ("s%  s%   d% ",head->no,head->name,head->score);
        head = head->next;
    }
    printf ("数据写入链表成功\n");
   
    return 0;
}
搜索更多相关主题的帖子: include return cannot C语言 
2017-05-04 21:44
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
显示屯屯屯……或 烫烫烫……
说明数据溢出。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-04 21:51
中午的星星
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-6-29
收藏
得分:0 
关键是我不知道怎样改
2017-05-04 21:59
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
你的文件中的是字符,还是字符串?
不负责任的猜想,应该是缺少\0的问题。
如果你不确定,那就不要用二进制打开,尝试用文本模式打开。

[此贴子已经被作者于2017-5-4 22:04编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-04 22:02
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
以下是引用renkejun1942在2017-5-4 21:51:12的发言:

显示屯屯屯……或 烫烫烫……
说明数据溢出。

还有可能是读取数据有误~例如一个汉字两个字节~如果只读取其中一个字节或者读取字节不连续就会这样……~~~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-04 22:20
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
还要看看student.txt文件是怎样生成的
2017-05-04 23:23
中午的星星
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-6-29
收藏
得分:0 
回复 5楼 九转星河
我是直接新建txt 输入的 1 2 3 4 5 6  保存
2017-05-06 13:22
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用中午的星星在2017-5-6 13:22:10的发言:

我是直接新建txt 输入的 1 2 3 4 5 6  保存

明显就是数据结构不对。
不要偷懒,用students数据结构输入输出。
2017-05-06 14:44
快速回复:C语言 读文件进链表 显示有多余的 屯屯屯屯屯屯
数据加载中...
 
   



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

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