2014-02-19 3 views
0

학교용으로 C 애플리케이션을 만들 필요가 있고 im이 1 비트 꼼짝하지 않습니다. 나는 구조체를 단어로 채운다. 그냥 임의의 정수를 출력 할 때를 제외하고는 잘 작동한다.if 문에서 구조체 변수

내 코드 : 이제

char buffer[20]; 
int i; 
for(i = 0; i < 10; i++) { 
    fgets(buffer,20,fp); 
    apcWordList[i].pcWord = strdup(buffer); 
    apcWordList[i].cMaxScore = 0; 
    apcWordList[i].tTime = time(NULL); 
} 
fclose(fp); 

내가하고 싶었던 것을이 (sSecretWord는 사람이 추측 그는 단어 추측에 대해 얻은 포인트 점수 단어)이었다

for(i = 0; i < 10; i++) { 
    fgets(buffer,20,fp); 
    if(apcWordList[i].pcWord == sSecretWord && score > apcWordList[i].cMaxScore) { 
     apcWordList[i].cMaxScore = score; 
     apcWordList[i].tTime = time(NULL); 
    } 
} 

을하지만, 충돌이 일어나고 변수를 비교하고 필요할 때 변수를 변경하는 방법이 정말 혼란 스럽습니다. 나는 충분히 설명해줬으면 좋겠다. 영어도 잘 읽을 수 있었으면 좋겠다.

+2

오타'위해 (I 0 - <10; I ++)'이어야 위해 (I = 0; i가 10 <; 내가 ++)이'좋아 – Nabla

답변

2

pcWordchar *이라고 가정하면 대부분의 경우 ==을 사용하여 해당 포인터를 비교할 수 없습니다.

C에 문자열 데이터 형식이 없으므로 문자열은 단일 값이 아닙니다.

당신은 strcmp()을 사용해야합니다 코드의 나머지 부분은 거의 의미가

if(strcmp(apcWordList[i].pcWord, sSecretWorD) == 0 && 
    score > apcWordList[i].cMaxScore) 

, 난 두려워. 루프에 오타가 있는데 fgets()if 사이에 연결이 없습니다. 나는 fgets()이 코드의 두 번째 부분에 있어야한다고 생각하지 않습니다. 당신의 if 조건

apcWordList[i].pcWord == sSecretWord 

에서

+0

제가 시도 STRCMP() 함수 그리고했다. 이것은 올바른 방향으로 나를 도울 것입니다. 감사합니다. – Jop

0

다음 표현식은 메모리가로 평가 주소가 아니라 당신이 원하는 아마 그 메모리 위치에 저장된 값을 비교합니다. 위의 두 변수가 가리키는 문자열을 비교하는 대신 strcmp을 사용해야합니다.

strcmp(apcWordList[i].pcWord, sSecretWorD) == 0