2011-03-19 107 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提到,你的代碼是不是很完整 - 這可能是問題的一個來源或不是(具體取決於發佈之前你已經遺漏了多少)