2013-02-05 3 views
0

단어 비교 프로그램을 실행하려고하는데, 비교하려고하는 문자를 추가하는 대신 for 루프를 멈출 수 없습니다. 메시지가 'a a a'이고 일치하는 단어가 'a' 인 경우문자열의 각 문자를 개별적으로 처리하려면 어떻게합니까?

for(m = 0; m < wordSize; ++m) 
{ 
    a = l + m + 1; 
    if(word[m] != message[a]) 
    { 
     printf("Falsified by not word match: message[%d] = '%s' and '%s'\n", a, (char *)&message[a], (char *)&word[m]); 
     i = 0; 
    } 
} 

이 나에게 Falsified by not word match: message[1] = ' a a a' and 'a' 같은 것을 제공합니다.

+4

A, L, 및 m은 어떤 종류의? 또한 당신이 해결하고자하는 것에 대한 더 좋은 예를 제시하십시오. – trumpetlicks

+0

메시지는 공백 문자로 시작되며 단어 'a'와 일치하지 않습니다. 코드를 검사하여 공백을 건너 뛰고 싶을 수 있습니다! 네가 옳은 문제인지 잘 모르겠다 !! – saeedn

답변

0

print()을 사용하고 %s과 함께 문자열을 전달하면 문자열의 끝까지 모든 문자열이 표시됩니다. 문자열의 끝은 "NUL"문자 인 ASCII 0으로 표시됩니다. C에서는 \0입니다.

문자를보고 있지만 오류 메시지가 문자열을 인쇄하고 원하는 것보다 더 많이 인쇄하고 있습니다.

은 그냥 달랐다 문자를 인쇄하려면, 그래서처럼 %c 형식의 코드를 사용

printf("Falsified by not word match: message[%d] = '%c' and '%c'\n", a, message[a], word[m]); 
관련 문제