pScanInfo->last_file_path3的内容为什么有时显示不正常

huabinsir 2014-01-21 05:54:33
在一个小系统的嵌入式平台上, pScanInfo->last_file_path3的内容为什么有时显示不正常?
是小系统的问题吗?

__bool ScanGetLastFile(HSCAN hScan, eBookScanedEntry_t* return_enter1,eBookScanedEntry_t* return_enter2,eBookScanedEntry_t* return_enter3, __s32 *nNandFileCount)
{
eBookScanInfo_t *pScanInfo;

if(hScan == NULL || return_enter1== NULL || return_enter2 == NULL || return_enter3== NULL)
{
//eLIBs_printf("..%s..%d.....\n", __FILE__, __LINE__);
return EPDK_FALSE;
}

pScanInfo = (eBookScanInfo_t*)hScan;
if(pScanInfo->CurCnt == 0)
{
return EPDK_FALSE;
}

*nNandFileCount = pScanInfo->CurCnt;

eLIBs_printf("..%s..%d...pScanInfo->CurCnt=%d...path = %s;...path = %s;...path = %s;\n\n", __FILE__, __LINE__,
pScanInfo->CurCnt, pScanInfo->last_file_path1, pScanInfo->last_file_path2, pScanInfo->last_file_path3);
//pScanInfo->last_file_path1, pScanInfo->last_file_path2, pScanInfo->last_file_path3 内容显示正常


if (pScanInfo->CurCnt==1)
{
return_enter1->CtearTime = pScanInfo->last_file_CreateTime1;
return_enter1->Path = pScanInfo->last_file_path1;
return_enter2->CtearTime = NULL;
return_enter2->Path = NULL;
return_enter3->CtearTime = NULL;
return_enter3->Path = NULL;
}

if (pScanInfo->CurCnt==2)
{
return_enter1->CtearTime = pScanInfo->last_file_CreateTime1;
return_enter1->Path = pScanInfo->last_file_path1;
return_enter2->CtearTime = pScanInfo->last_file_CreateTime2;
return_enter2->Path = pScanInfo->last_file_path2;
return_enter3->CtearTime = NULL;
return_enter3->Path = NULL;

eLIBs_printf("..%s..%d...pScanInfo->CurCnt=%d...path = %s;...path = %s;...path = %s;\n\n", __FILE__, __LINE__,
pScanInfo->CurCnt, pScanInfo->last_file_path1, pScanInfo->last_file_path2, pScanInfo->last_file_path3);
//pScanInfo->last_file_path1, pScanInfo->last_file_path2, pScanInfo->last_file_path3 内容显示正常

}

if (pScanInfo->CurCnt>=3)
{
eLIBs_printf("..%s..%d...pScanInfo->CurCnt=%d...path = %s;...path = %s;...path = %s;\n\n", __FILE__, __LINE__,
pScanInfo->CurCnt, pScanInfo->last_file_path1, pScanInfo->last_file_path2, pScanInfo->last_file_path3);
//pScanInfo->last_file_path1, pScanInfo->last_file_path2 内容显示正常

//pScanInfo->last_file_path3 内容显示不对正常


return_enter1->CtearTime = pScanInfo->last_file_CreateTime1;
return_enter1->Path = pScanInfo->last_file_path1;
return_enter2->CtearTime = pScanInfo->last_file_CreateTime2;
return_enter2->Path = pScanInfo->last_file_path2;
return_enter3->CtearTime = pScanInfo->last_file_CreateTime3;
return_enter3->Path = pScanInfo->last_file_path3;
}



return EPDK_TRUE;
}
...全文
60 点赞 收藏 7
写回复
7 条回复
huabinsir 2014年01月23日
奇怪, eLIBs_printf 在其它界面的输出信息是正确的. 个人认为:是不是嵌入式小系统 堆或栈方面分配内存有问题.
回复 点赞
vipcxj 2014年01月23日

*nNandFileCount = pScanInfo->CurCnt;

eLIBs_printf("..%s..%d...pScanInfo->CurCnt=%d...path = %s;...path = %s;...path = %s;\n\n", __FILE__, __LINE__, 
pScanInfo->CurCnt, pScanInfo->last_file_path1, pScanInfo->last_file_path2, pScanInfo->last_file_path3);
//pScanInfo->last_file_path1, pScanInfo->last_file_path2, pScanInfo->last_file_path3 内容显示正常

上面的注释里,你声称程序到这里为止一直是正常的,那么后面如果出现不正常,妥妥是因为eLIBs_printf的问题,除非你上面的注释里是胡扯的。
回复 点赞
huabinsir 2014年01月22日
引用 1 楼 vipcxj 的回复:
有时是啥时候呢? 难道是当且仅当CurCnt >= 3的时候? 不正常又是怎么个不正常,正常又是怎么个正常呢?
有时能正确的显示出内容, 有时显示出来的是乱。 这是什么原因呢?
回复 点赞
huabinsir 2014年01月22日
eLIBs_printf 是小系统的自带的函数. 第一次显示正常,后来大多数不正常(有时是正常的).
回复 点赞
vipcxj 2014年01月22日
eLIBs_printf 还有这东西是不是有问题,因为照你的说法,乱之前最近的那一次正常,就发生在这个函数里,而这个函数和后面发生乱码的情况之间根本就没隔其他语句,那唯一可能出问题的地方就妥妥是它了,何况这东西明显不是系统函数,是你们自己写的,出错也很正常~
回复 点赞
vipcxj 2014年01月22日
引用 2 楼 huabinsir 的回复:
[quote=引用 1 楼 vipcxj 的回复:] 有时是啥时候呢? 难道是当且仅当CurCnt >= 3的时候? 不正常又是怎么个不正常,正常又是怎么个正常呢?
有时能正确的显示出内容, 有时显示出来的是乱。 这是什么原因呢?[/quote] 怎么个乱发,举个例子嘛,是部分乱,还是全部乱~
回复 点赞
vipcxj 2014年01月21日
有时是啥时候呢? 难道是当且仅当CurCnt >= 3的时候? 不正常又是怎么个不正常,正常又是怎么个正常呢?
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告