2011-03-19 5 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

처음에는 코드가 누락 된 것 같습니다. –

+0

이것은 내 프로그램에서 가져온 코드 조각입니다. – foo

+0

당신의 대답은 아니지만 카운터와 ii는 전체 기능을 수행하는 동안 똑같은 가치를 유지하는 것 같습니다 ... 왜 이런 중복성이 있습니까? 또한 inputData [ii + 1]에 액세스 할 때 조심하십시오. '\ 0'은 당신을 안전하게 지켜줄 것이기 때문에 작동하지만, inputData [ii + 2]를 사용한다면 범위를 벗어납니다. – Ptival

답변

2

당신이 어딘가에 아직 데이터를 입력하지 않은 데이터를 읽으려고하고 있기 때문에 그것은 작동하지 않습니다.

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

if (inputData[ii] == '~' && inputData[ii + 1] == '~') // nothing in inputData[ii + 1] yet. 
는 수표를 역

(및 II는 적어도 두 번째 반복 될 때까지 확인하지 않음) : 나는 startIndexForData 어디 초기화 표시되지 않습니다

if (inputData[ii] == '~' && inputData[ii - 1] == '~') // Note change from + to - 
0
  • .
  • 어디서나 초기화 된 chracterCounter이 보이지 않습니다.
  • inputDatainputLine을 모두 참조했지만 둘 중 하나를 정의하지 않았습니다.
  • dataCharCount을 참조하십시오. 그러나 그에 대한 정보는 표시하지 마십시오.
  • counter이 초기화되고 증분되지만 사용되지는 않습니다. 그게 뭐야?

이러한 모든 문제를 감안할 때 코드를 올바르게 분석하기가 어렵습니다.
그 원인만으로도 문제의 근본 원인이 될 수 있습니까? 한 문제의 소스 또는 될 수있는 -

+0

이것은 답변이 아닙니다. 그것은 의견입니다. –

+0

@Ken : 나는 동의하지 않는다. 문제의 여러 원인을 지적했습니다. 특히 코드가 작동하지 않는다고 말했고, 실패하는 방법을 설명하지 않고 특정 핵심 변수가 무엇인지 예상했기 때문에 더욱 그렇습니다. 그가 설명하는 문제를 해결한다면, 그는 일할 수있는 코드를 가지고있을 것입니다. – abelenky

+0

함수에서 선언되지 않았으므로 해당 변수가 전역 변수라는 것은 꽤 분명합니다. 불필요한'counter '증가는 확실히 일어나지 않지만 아직 언급하고 있습니다.당신이 말한 것들은 게시 된 코드와 관련이 없으며 (당신이 볼 수있는 한, 어쨌든), 당신은 그것을 해결하는 데 도움이 될만한 정보를 제공하지 않았습니다. 어떻게 그 대답입니까? –

0

난 당신이

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

abelenky가 언급 한 것처럼 그것과는 별도로

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

,

에, 코드가 매우 완료되지 않은 변경할 필요가 있다고 생각 (게시하기 전에 남은 금액에 따라 다름)