一个简单的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;
}
这个程序哪里有问题啊?
#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;
}