c - 如何从 C 中的函数返回结构数组?
问题描述
我正在尝试fread
在辅助函数内的数组中创建一个结构和文件数据数组。incompatible pointer type
编译程序时不断出错。这是我当前的代码:
struct fentry *read_fentries(FILE *fp){
fentry *files[MAXFILES];
// EXTRACT FENTRIES AND FNODES FROM FILE
if ((fread(files, sizeof(fentry), MAXFILES, fp)) == 0) {
fprintf(stderr, "Error: could not read file entries\n");
closefs(fp);
exit(1);
}
return files;
}
我的主要问题是如何创建一个预定义大小(MAXFILES)的结构数组并从函数中返回它,以便我可以访问我的main
. 我必须使用分配内存malloc
吗?
解决方案
如果你包装数组,你也可以返回值。
#define MAXFILES 50
struct _fentry
{
FILE *fp;
int somedata[3];
double anotherdata[10];
/* ... */
};
struct fentry
{
struct _fentry entries[MAXFILES];
};
struct fentry foo()
{
struct fentry entries;
/* .... */
return entries;
}
推荐阅读
- javascript - 如何在 ReactJS 中的组件之间共享数组的动态对象?
- javascript - 如何停止keydown事件被卡住?
- c# - 如何将 XML 加载到 C# WPF 树视图中
- twilio - 为什么 Twilio 呼叫转移与运营商呼叫转移的操作方式不同?
- linux - 无法将用户添加到 docker 组
- db2 - SQL 为日期传递表日期
- python - 我可以在测试用例中模拟我的函数的输入吗?
- python - 从 tf.TFRecordReader() 转移到 tf.data.TFRecordDataset 时出错
- excel - 查找某个文本,将文本下方的所有内容复制到另一个工作簿中的相同文本下
- python-3.x - 如何根据ggplot中的数据集按小时绘制活动?