我有一个名为store.h的头文件,其中包含一个结构体和我的main位于E.c,我目前遇到一个错误,我无法理解为什么会发生。如有任何帮助,不胜感激
store.h:
struct st{
char *buf,*var;
int line_number;
char *keywords;
char *operators;
};
欧共体
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "store.h"
#define max 1000000
int main(int argc,char *argv[]){
FILE *fp;
int ag=0;
fp=fopen( argv[1],"r");
if(fp==NULL){
printf("error cannot open filen");
exit(1);
}
while(feof(fp)==0){
*buf=fgets(*buf,max,fp);
// irrelevant commands follow
}
fclose(fp);
}
在*buf=fgets(*buf,max,fp);
上我得到error:‘buf’ undeclared (first use in this function)
,但是我已经在我的结构体中声明了它,并且我已经包含了包含该结构体的文件,我错在哪里?
buf
是结构体的成员。 你需要定义struct对象。- 需要为
buf
分配内存 - 你不应该给
buf
分配返回值,因为它可能导致内存泄漏 - 为什么" while (!feof (file)) "总是错的?
int main(int argc,char *argv[]){
FILE *fp;
struct st s;
int ag=0;
s.buf = malloc(max);
if(!s.buf) exit(2);
fp=fopen( argv[1],"r");
if(fp==NULL){
printf("error cannot open filen");
exit(1);
}
while(fgets(s.buf,max,fp)){
/* ...*/
}
/* .... */