C语言奇特的Bug

本文针对一个特定的文本解析程序进行Bug分析,该程序旨在从文本中筛选出特定字符串并提取其中的数字。文章详细展示了程序运行时出现的问题,并探讨了可能的错误原因。

 请教一下,大神解释下面程序中bug,百思不得其解。程序意图:从文本中筛选出-> “;<Delay> 12000 ”->"12000"。

程序:

while((ch4=getc(fpGcode) )!= EOF)

......... #if 1
/*key: make sure only once -(ch3Enter == '\n')*/
if((ch3Enter == '\n'))
{
flagDelay = 0;

}

if((ch3Enter == '<')&& (ch1Cur == 'D'))
{
flagDelay = 1;
flagDelayRightSharp = 0;
flagTemp = 0;
/*Delay 无效,仅仅保留数字字符*/
memset(DelayBuf, '\0', GcodeBUFSIZE);
#if 0
printf("<lineDelay=%ld>#ch1Cur=%c\n", line, ch1Cur);
#endif
}

if(flagDelay == 1)
{
flagTemp++;
// printf("%c", ch1Cur);

#if 1
if((ch3Enter == 'y') &&ch1Cur == '>')
{
flagDelayRightSharp = 1;
posDelay = 0;
}
#if 1
if(ch1Cur == '>')
continue;
if(ch1Cur == ' ')
continue;
#endif
#endif

if(flagDelayRightSharp == 1 &&(ch1Cur != '\n'))
{
printf("[%c]", ch1Cur);
DelayBuf[posDelay] = ch1Cur;
printf("<%ld>\n", posDelay);
posDelay++;
}


if((ch1Cur == '\n'))
{
DelayBuf[posDelay-1] = '\0';
printf("<lineDelay=%ld><posDelay=%ld>DelayBuf=%s\n", line, (posDelay-1), DelayBuf);
printf("flagTemp=%d<<<<<<<<<<<\n\n", flagTemp);
}

}

#endif

运行:

<lineDelay=22415><posDelay=5>DelayBuf=
flagTemp=15<<<<<<<<<<<


[4]<0>
[8]<1>
[0]<2>
[0]<3>
]<4>
<lineDelay=22421><posDelay=4>DelayBuf=
flagTemp=13<<<<<<<<<<<


[1]<0>
[2]<1>
[0]<2>
[0]<3>
[0]<4>
]<5>
<lineDelay=22429><posDelay=5>DelayBuf=
flagTemp=15<<<<<<<<<<<


[4]<0>
[8]<1>
[0]<2>
[0]<3>
]<4>
<lineDelay=22435><posDelay=4>DelayBuf=

flagTemp=13<<<<<<<<<<<


bug1:“]<4>”.“[”丢失

bug2: "DelayBuf="字符数组无输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值