在解析TS流文件时,我要实现输入节目号就能显示节目相关信息,但是我刚开始没有判断输入的节目号是不是正整数,我不小心按了其他键就一样会被识别,但是没有信息,这可不行,万一用户按错了键,但还是跳转到了节目信息节目,显示空白,用户可就生气。
我的实现方法是先定义个数组,然后逐位比较是不是0~9的数字,这可通过isdigit()函数来实现,全部判断完再通过atoi()函数转换一下给一个变量,就完成了,因为我需要的是正整数和输入0就退出,所以程序就是这样的。
int i = 0;
char a[10] = { 0 };
unsigned int uiServiceId = 0;
while(1)
{
prf_dem("please enter program number(exit 0):");
scanf("%s",a);
for(i = 0; a[i] != 0; i++)
{
if(isdigit(a[i]) == 0)
{
if(i == 0 && a[i] == 0)
{
break;
}
prf_dem("please enter positive integer!!!!!!\n");
prf_dem("please enter program number(exit 0):");
scanf("%s",a);
break;
}
}
uiServiceId = atoi(a);
if(uiServiceId)
{
/* parse EIT information*/
iReturn =ParseAllEitSection(stTransportParameter,pfTsFile,iTsPosition,uiServiceId);
if(iReturn == -1)
{
printf("Fail to ParseAllEitSection!!!\n");
return iReturn;
}
}
else
{
break;
}
}