回 帖 发 新 帖 刷新版面

主题:强强 进来!! 第一次来这论坛不知道结贴就不能回复了!!!

我知道用fscanf啊!! 

我试了很多都不行 

你能具体点吗??

求你了,谢谢

#include<stdio.h>
#include<malloc.h>
#include<string.h>
struct student
{
    int no;
    char name[20];
    int cpp;
    int math1;
    int english;
    int math2;
    float evg;
    int rank;
    struct student *next;
};

main()
{
    struct student *p,*head,*last;
    p=(struct student*) malloc(sizeof(struct student));
    FILE *fp;
    fp=fopen("d://c++6.0//t1.txt","r");
    while(feof( fp ) !=1)
    {   
        fscanf(fp,"%d%s%d%d%d%d",&p->no,p->name,&p->cpp,&p->math1,&p->english,&p->math2);
        p->evg=(p->cpp+p->math1+p->english+p->math2)/4.0;
        p->next=NULL;
        last=p;
        
    
        }
    fclose(fp);
}


t1里的内容是


1     王..      80         80        80     80       
2     张..      90         90        90     90 


这样的

但好像while是无限循环的!!!!

不知道怎么回事!!!! 


帮我看下怎么while  是无限循环??

回复列表 (共4个回复)

沙发

feof 
Syntax: 
  #include <stdio.h>
  int feof( FILE *stream );  

The function feof() returns a nonzero value if the end of the given file stream has been reached.
注意是nonzero value告诉你一定返回1了吗

板凳

再有不要这么喊,我水平不行,回答的不一定对,你应该多向高手们请教请教

3 楼


至少我用你说的  fgets和sscanf 解决了我的问题


[em16]

非常感谢啊

我把while(feof(fp)!=1)改成while(!feof(fp))

它就不是无限循环了^ ^

4 楼

看这标题还以为强强兄咋得罪人了呢:)
强强兄人如其名,不用太谦虚:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册