一个简单的C语言的文件程序

来源:百度知道 编辑:UC知道 时间:2024/06/18 05:06:49
#include "stdio.h"
#include "malloc.h"

struct datanode
{
int i;//字符位置;
float value;//数据值
struct datanode *next;
}*data,*data2;

int main()
{
int j=0;
FILE *infile;

data=(struct datanode *)malloc(sizeof(struct datanode));

if((infile=fopen("data.txt","r"))==NULL) return false;
fread(&(data.value),4,1,infile);
while(data.value!=EOF)
{

data.i=++j;
data2=(struct datanode *)malloc(sizeof(struct datanode));
data2.next=null;
data.next=data2;
data=data2;
fread(&(data.value),4,1,infile);
fseek(infile,1,1);
}
return 0;

}
这个程序哪里有问题啊?

data是指向结构体的指针,不能直接用点操作符。
要么写成(*data).value;要么写成data->value;
把所有的data.value换成data->value;data.i换成data->i就可以了。

改好了:
#include "stdio.h"
#include "malloc.h"

struct datanode
{
int i;//字符位置;
float value;//数据?
struct datanode *next;
}*data,*data2;

int main()
{
int j=0;
FILE *infile;

data=(struct datanode *)malloc(sizeof(struct datanode));

if((infile=fopen("data.txt","r"))==NULL) return false;
fread(&(data->value),4,1,infile);
while(data->value!=EOF)
{

data->i=++j;
data2=(struct datanode *)malloc(sizeof(struct datanode));
data2->next=NULL;
data->next=data2;
data=data2;
fread(&(data->value),4,1,infile);
fseek(infile,1,1);
}
return 0;

}