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++]);
}
展开
 我来答
空号一号
推荐于2016-11-22 · TA获得超过3845个赞
知道大有可为答主
回答量:1495
采纳率:0%
帮助的人:1607万
展开全部

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++];
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式