2013-11-21 5 views
0

구조체의 배열을 가지고 있는데 구조체의 요소 중 하나가 문자열이고이 문자열을 다른 문자열과 12 개의 문자열 배열로 비교해야합니다. strcmp가 나를 위해 작동하지 않는 것 같습니다. 나는 문자열을 비교하고 bool 값을 반환하는 별도의 함수를 만들어야하지만 함수 비교를 수행하는 방법을 이해할 필요가 없다는 것을 알고있다.구조체의 문자열과 배열의 문자열 비교

구조체

typedef struct{ 
    char *hometeam[Max_number_of_chars], *awayteam[Max_number_of_chars]; 
    int playround, date_day, date_month, date_year, 
      time_hour, time_minute, home_score, away_score, crowd_thousand, 
      crowd_hundred; 
    } match; 

문자열

char *teams[Number_of_teams] = {"AGF","AAB","SDR","RFC", 
            "EFB","BIF","SIF","OB", 
            "FCK","FCM", "ACH","FCN"}; 

내가 compare_function에게

if(compare_names(all_games[i].hometeam, teams[j])==0) {//crazy stuff} 

수정을 필요로하는 라인의 배열 : 나 비교 기능을하고 도움이 필요한 어떤 * teams [j]의 문자열 값과 all_games [i] .hometeam의 문자열 값. 하지만 구조체 all_games [i] .hometeam의 특정 부분을 compare_function에 전달하는 방법을 모릅니다. 여기서이 문자열은 char 문자열이되고 싶습니다.

+0

게시하기 전에 코드를 형식을 지정하십시오. – erbdex

답변

0
// Assuming char *teams[Number_of_teams] is globally defined. 
int find_match(struct match) 
{ 
    for(i=0; i < Number_of_teams; i++){ 
     if(strcmpi(match.hometeam, teams[i]) == 0){ 
      return i; 
     } 
    } 
    return -1; 
} 

당신이 원하는 논리 흐름은 분명하지 않지만 위와 같은 것을 시도 할 수 있습니다.

+0

좋아, 어쩌면 나는 내 논리로 충분히 명확하지 않을 수도 있지만 문제는 이제 내가 문자열을 비교해야합니다 내 함수에 char * 형식으로'all_teams [i] .hometeam '을 전송하는 방법을 모르겠다. all_teams와 팀 [j] – user3016762

+0

의 문자열에서 함수가 구조가 아닌 문자열 만 받아들이도록하고 싶습니까? 변경 - find_match (char * team). 그리고 이제 비교는 strcmpi가됩니다 (팀, 팀 [i]) – erbdex

+0

예, 구조체의 문자열 부분 만 받고 싶습니다. 또한 team [i]의 특정 문자열을 비교 함수의 입력으로 사용하고 싶습니다. 나는 allready 이미 alle와 나는 다른 함수에서 j의 비교 함수를 호출해야합니다 통해 루프를 실행해야합니다. 컴파일러가 입력 전에 specifier를 기대하는 오류가 계속 발생합니다. – user3016762

관련 문제