2016-06-28 1 views
-2
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

struct res{ 
int win; 
int defeat; 
}; 


struct tenis_player{ 
char name[20]; 
char last_name[20]; 
int pos; 
char hand[10]; 
struct res comp; 
}Ten[20]; 

int main(){ 
int i, n; 
float comparison, br=0; 
scanf("%d",&n); 
for(i=0;i<n;i++){ 
    scanf("%s",&Ten[i].name); 
    scanf("%s",&Ten[i].last_name); 
    scanf("%d",&Ten[i].pos); 
    scanf("%s",&Ten[i].hand); 
    scanf("%d/%d",&Ten[i].comp.win,&Ten[i].comp.defeat); 
    } 
    printf("Results:\n"); 
    for(i=0; i<n; i++){ 
     comparison = Ten[i].comp.win/Ten[i].comp.defeat; 
      if(Ten[i].hand == "left" && comparison>3){ 
       printf("%s %s %f",Ten[i].name,Ten[i].last_name,comparison); 
       br++; 
       printf("\n");}} 
     if (br==0) 
     printf("No tenis players"); 
return 0; 
} 

내 코드 "경우 (텐 [I] .hand =="왼쪽 "& & 비교> 3)"및 그냥 "아니오 TENIS 플레이어"인쇄 스킵 유지 내가 무엇을 입력하든. 도움이 될 것입니다. :)기능 "IF"구조 작업시

+2

읽기에 대한 [STRCMP (http://linux.die.net/man/3/strcmp) – red0ct

+0

맞춤법 검사 지원 :

당신이 strcmp 기능을 사용할 필요가 문자열을 비교하려면 TENIS을 -> 테니스. – Lundin

답변

4

C에서 할 때 예 : Ten[i].hand == "left" 문자열을 비교하지 않으면 포인터가과 비교됩니다. 그리고이 경우 두 개의 포인터는 결코 같지 않을 것입니다.

if(strcmp(Ten[i].hand, "left")==0 && comparison>3){...} 
+0

슬프게도하지 않은 것처럼 보입니다 : s – voluc

+0

@voluc 그런 다음 * 디버거 *를 꺼내서 한 줄씩 코드를 실행하여 코드가 무엇을하는지, 각 단계에서 모든 변수의 값이 무엇인지 확인하십시오. . –

+0

'scanf ("% d/% d", & Ten [i] .comp.win, & Ten [i] .comp.defeat);'이 줄을 가까이서 보면 문제를 발견 할 수 있습니다. – FredK

관련 문제