gpt4 book ai didi

c - 如何在一个数组中存储3种不同类型的数据

转载 作者:行者123 更新时间:2023-11-30 21:02:12 25 4
gpt4 key购买 nike

我需要在 c 中存储 3 个链接的数据位。我最初的想法是一个 3 维数组,但这行不通,因为所有 3 种数据类型都不同。顶层必须是一个字符数组。第二级需要是日期/时间,因此是整数。第三级是温度读数,因此需要是 float 。

执行此操作的正确方法是指向指向 float 组的指针数组的指针数组吗?如果是的话,用 C 语言怎么写?

最佳答案

根据您描述数据的方式,听起来您有一堆命名站/位置/等的带时间戳的温度读数,例如

Location A           Location B
---------- ----------
time1 -> temp1 time1 -> temp1
time2 -> temp2 time2 -> temp2
... ...
timeN -> tempN timeN -> tempN

车站之间的时间戳可能会或可能不会对齐。

这接近你的情况吗?

如果是这样,以下模型可能有用:

struct TimeAndTemp 
{
time_t timestamp;
double temp;
};

struct Station
{
char name[L+1]; // L is max name length
struct TimeAndTemp readings[M]; // M is max readings per station
};

struct Station stations[N]; // array of stations, each station has a name
// and contains a list of timestamped
// temperature readings.

您将像这样访问字段:

strcpy( stations[i].name, newName );
printf( "Station name is %s\n", stations[i].name );
if ( strcmp( stations[i].name, searchName ) == 0 ) { ... }

stations[i].readings[j].timestamp = newTime();
stations[i].readings[j].temp = newTemp();

printf( "Station %s reading at time %s: %f\n",
stations[i].name,
ctime( &stations[i].readings[j].timestamp ),
stations[i].readings[j].temp );

这是一个简单的模型,假设站点数量固定,每个站点的最大读数数量也固定。如果您想要更开放的东西,您可以使用链表而不是数组。

关于c - 如何在一个数组中存储3种不同类型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31812507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com