一源代码:
#include <stdio.h>
FILE *
open_data(void)
{
FILE *fp;
char buf[BUFSIZE];
if( (fp = fopen("datafile","r")) == NULL )
return NULL;
if( setvbuf(fp,buf,_IOLBF, BUFZIE) != 0)
return NULL;
return fp;
}
潜在的问题:
当open_data函数返回时,其在stack上的位置,会被下一个调用的函数占用。 但是该流的缓冲区还是指向这里 会造成混乱。 应在全局的存储空间静态的(static 和extern)或者动态的alloc 为数组buf分配空间。