fgetpos和fsetpos的参数分别为:
int fgetpos(FILE *
stream, fpos_t *
pos);
int fsetpos(FILE *
stream, const fpos_t *
pos);
其中的参数是pos是指向 fpos_t * 类型的一个指针。
但是当我这样使用的时候
fpos_t * pos;
fgetpos(fp,pos);
会提示错误,gcc会提示段错误,但是下面这样就可以,不知道为什么?
fpos_t pos;
fgetpos(fp,&pos);
参数二的两种写法不是都表示pos这个变量的地址吗?
也许应该看两种定义方式的区别吧:
fpos_t * pos;
定义了一个指向结构体的指针但是没有分配空间。
fpos_t pos
&pos;
分配了空间,fgetpos需要的是一个已经分配好了空间的参数。
对 fpos_t * pos; 加一行进行测试:
pos = (fpos_t)malloc(12);
OK,这样就可以了,和 &pos效果一样。注意基本类型意外的变量使用之前需要分配空间。