C语言问题,结构体数组查询及追加问题,求助!
dataNumber++后视为追加数据结束,我的问题时下次请求查询时,怎么能使for循环里的dataNumber为++后的数据代码如下:intdataNumber=0;f...
dataNumber++后视为追加数据结束,我的问题时下次请求查询时,怎么能使for循环里的dataNumber为++后的数据
代码如下:
int dataNumber=0;
for(i=0;i<dataNumber;i++)
{
//对结构体数组struct *Target target[100]进行查找条件设置,符合条件则查询成功,直接返回数据
}
if(i==dataNumber)
{
//查询到结构体数组最后一行,仍未查询,视为查询失败,直接调用下面函数对结构体数组进行追加
calsun(year,month,day,tt,&target[dataNumber++]);
} 展开
代码如下:
int dataNumber=0;
for(i=0;i<dataNumber;i++)
{
//对结构体数组struct *Target target[100]进行查找条件设置,符合条件则查询成功,直接返回数据
}
if(i==dataNumber)
{
//查询到结构体数组最后一行,仍未查询,视为查询失败,直接调用下面函数对结构体数组进行追加
calsun(year,month,day,tt,&target[dataNumber++]);
} 展开
1个回答
展开全部
把
int dataNumber = 0;
这条拿到全局变量里就可以了。这样在程序开始时其值为0,随着追加数据而增加。
int dataNumber = 0;
这条拿到全局变量里就可以了。这样在程序开始时其值为0,随着追加数据而增加。
更多追问追答
追问
if(dataNumber>100)
time_t m=target[0].timestamp;
for(i=1;iMax
m=target[i].timestamp;
target[i]=target[dataNumber++];
}
当追加数据超过结构体数组空间时,选择更新数据,用新数据换掉最久时间戳的记录。赋值那块对吗?
追答
有三个问题。
0、第5行怎么突然冒出来个Max?应该是m吧?
1、时间戳这个东西是未来的时间戳比过去的时间戳大,要找到最久的时间戳,即最过去的时间戳,应该在target[i].timestamp中找最小值而不是最大值。当然如果你的系统的“时间戳”跟一般意义的时间戳不是一回事那另当别论。
2、不能把替换数据的语句放在循环体中,这样它会执行100次,而应该只执行一次才对。正确做法是用循环找到有最小时间戳的target,然后在循环体之外进行替换。
修改后的代码:
if(dataNumber>100)
time_t m=target[0].timestamp;
for(i=1;i<101;i++)
{
if(target[i].timestamp<m
m=target[i].timestamp;
}
target[i]=target[dataNumber++];
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询