2016-06-28 53 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)」和剛打印出「無捷尼斯球員」不管我輸入什麼。 任何幫助,將不勝感激! :)退出「IF」的功能與結構的工作時

+2

閱讀有關[STRCMP(http://linux.die.net/man/3/strcmp) – red0ct

+0

拼寫援助:TENIS - >網球。 – Lundin

回答

4

在C當你如Ten[i].hand == "left"你沒有比較字符串,你在比較指針。在這種情況下,兩個指針將會(並且可能)永遠不會相同。

比較字符串,你需要使用strcmp功能:

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

似乎並不也曾黯然做到了:■ – voluc

+0

@voluc那麼它的時間取出* *調試程序並通過線的代碼行一步看看它和所有變量的值在每個步驟。 –

+0

'的scanf( 「%d /%d」,&十大[I] .comp.win,與十[I] .comp.defeat);'這行仔細觀察,你會發現你的問題。 – FredK