2011-03-19 111 views
0

inputData[] = {Zw~~"};检测某些字符块

为什么不能使用此代码?

if (inputData[ii] == '~' && inputData[ii + 1] == '~') 

我要检测的~~一些如何

void readInputDataForDecryption(void) 
{ 
    int i, ii; 
    ii = 0; 
    int counter = 0; 

    for (i = startIndexForData; i < characterCounter; i++, ii++) 

    { 

    counter++; 
    inputData[ii] = inputLine[i]; 

    if (inputData[ii] == '~' && inputData[ii + 1] == '~') 
    { 
     printf("ii: %d\n", ii); 
     printf("found ~~\n"); 
    } 
    dataCharCount++; 
    } 

} 
+0

看起来你错过了一些代码在开始 – 2011-03-19 22:04:20

+0

这只是从我的程序中取出的一大块代码 – foo 2011-03-19 22:05:34

+0

不是你的答案,但计数器和ii似乎在整个功能期间保持完全相同的值...为什么这种冗余?在访问inputData [ii + 1]时还要注意,这是可行的,因为'\ 0'会保证你的安全,但是如果你使用inputData [ii + 2],那么你的读数就超出了界限。 – Ptival 2011-03-19 22:08:53

回答

2

因为你想读从什么地方你还没有把数据尚未数据它不工作。

inputData[ii] = inputLine[i]; // You've initialized inputData[ii] 

if (inputData[ii] == '~' && inputData[ii + 1] == '~') // nothing in inputData[ii + 1] yet. 

反向支票(不检查,直到二是至少在第二次迭代):

if (inputData[ii] == '~' && inputData[ii - 1] == '~') // Note change from + to - 
0
  • 我没有看到任何地方startIndexForData初始化。
  • 我没有看到chracterCounter在任何地方初始化。
  • 您既指inputData又指inputLine,但尚未定义任何一个。
  • 您可以参考dataCharCount,但不会告诉我们任何关于它的事情。
  • counter被初始化,并增加,但从未使用过。那是什么?

鉴于所有这些问题,很难正确分析您的代码。
也许这就是问题的根源呢?

+0

这不是一个答案。这是一条评论。 – 2011-03-19 22:11:43

+0

@Ken:我不同意。我指出了这个问题的多种可能原因,尤其是因为他说代码不起作用,没有描述它是如何失败的,以及他期望某些关键变量是什么。如果他修复了我描述的问题,他可能会有工作代码,这是一个解决方案。 – abelenky 2011-03-19 22:13:53

+0

很明显,这些变量是全局的,因为它们没有在函数中声明。多余的“计数器”增量绝对不会,但你提到它。您所指出的任何内容都与发布的代码无关(无论如何,就您所见),并且您没有提供任何有助于解决问题的信息。这个答案如何? – 2011-03-19 22:22:18

0

我认为你需要改变

for (i = startIndexForData; i < characterCounter; i++, ii++) 

for (i = ii = startIndexForData; i < characterCounter; i++, ii++) 

除此之外,作为abelenky提到,你的代码是不是很完整 - 这可能是问题的一个来源或不是(具体取决于发布之前你已经遗漏了多少)