我需要从存储到数组中的数据创建一个FILE结构。 在我的代码中,我有fopen函数,它返回一个FILE。想法是读取存储在数组中的所有数据,转换为FILE结构,最后返回FILE。
即:
FILE validFile (char *fileName){
char *data;
FILE *fp;
data = malloc(sizeof(char*));
populateData(data);
fp = fopen(data, "r");
return fp;
}
这可能吗?
谢谢和最诚挚的问候, 克里斯蒂安。
答案 0 :(得分:2)
是的,这是可能的,虽然不是纯粹的C.如果你为像Linux这样的类Unix操作系统编程,你可以使用POSIX的fmemopen
函数:
FILE validFile (char *fileName){
char *data;
FILE *fp;
data = populateData();
/* data_size is the length of the buffer */
fp = fmemopen(data, data_size, "r");
return fp;
}
答案 1 :(得分:-2)
我看到你发布的代码的另一个问题是fp
是一个堆栈又名自动变量;一旦你的validFile()
函数返回,fp
超出了范围,它的值是未定义的。
如果您更改其存储类,它的范围,将其作为参数传递,使用fp
,malloc()
分配它,您可以返回calloc()
...例如,像这样的东西,例如:
FILE **validFile (char *fileName){
char *data;
FILE **fpp;
if (fpp = (FILE **)calloc(1,sizeof(FILE *))) {
data = (char *)malloc(sizeof(char*));
populateData(data);
if ((*fpp = fmemopen(data, data_size, "r"))) {
/*
*/
} else {
/*
*/
}
} else {
/*
* calloc() failed...
*/
}
return *fpp;
}