2014-11-19 3 views
-2

좋아요, 그래서 기본적으로 16 명이 참가한 토너먼트 형태로 프로그램을 작성했습니다. 현재 루프를 사용하여 첫 번째 라운드에 대한 코드를 작성하고 각 경기의 승자를 R2CONTESTANTS라는 새로운 배열로 보내려고합니다. 그러나 모든 R2CONTESTANTS 배열 내부에 인쇄 할 때 절반 밖에 문자열 및 절반 임의의 문자를 배열의 다른 모든 요소 ([1], [3] 저장합니다. 어떤 도움을 주시면 고맙게 여기며 몇 시간 동안 붙어있어.C에서 strcpy의 사용

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

#define CONTESTANTS 16 
#define R2CONTESTANTS 8 
#define MATCHNO 8 

//Forward Declarations 
int R1(char Name [][20]); 

int main(void) 
{ 
    GetNames(); 
    int R1(char Name[][20]); 
    return 0; 
} 

int GetNames(void) 
{ 
    char Name[CONTESTANTS][20]; 
    int n; 


    printf("Hello and Welcome to the 2014 Tennis Knockout Competition!\n"); 
    printf("Please enter the names of all 16 players (MAX 20 CHARACTERS): \n"); 

/*Get Names loop*/ 
    for(n = 0; n < CONTESTANTS ; n++) 
    { 
     printf("%d >>", n+1); 
     scanf("%20s", Name[n]); 
     fflush(stdin); 
    } 
    R1(Name); 
} 

int R1(char Name[][20]) 
{ 
    int m/*match counter*/, i=0/*PLAYER COUNT*/, n/*TEST*/ ; 
    int WinNO; 
    char R2Name[R2CONTESTANTS][20]; 

    printf("Welcome to Round 1!\n"); 

    for(m = 0 ; m < MATCHNO ; m++, i+=2) //PER MATCH 
    { 
     printf("\nMatch %d of %d.\n", m+1, MATCHNO); 
     printf("\n1. %s v 2. %s\n", Name[i], Name[i+1]); 
     printf("\nPlease enter number of winner: "); 
     scanf("%d", &WinNO); 
     /*WINNER/LOSER*/ 
     switch(WinNO)//STRCPY is sending too many elements to R2CONTESTANTS array. 
     { 
      case 1: 
      strcpy(R2Name[i], Name[i]); 
      //printf("%s is sent through to the next round.\n", Name[i]); 
      break; 
      case 2: 
      strcpy(R2Name[i], Name[i+1]); 
      //printf("%s is sent through to the next round.\n", Name[i+1]); 
      break; 
      default: 
      printf("something went wrong\n"); //IMPROVE 
      break; 
     } 


    } 
    //TEST 
    for(n = 0 ; n < R2CONTESTANTS ; n++) 
    { 
     printf("Winner %d: %s\n", n+1, R2Name[n]); 
    } 
} 

이것은 뭐죠 지금 R2CONTESTANTS 내부 :

당첨자 1 :
당첨자 2
당첨자 3
당첨자 5 : 전자
당첨자 6
당첨자 4 ℃ 53,210 수상작 7 : g
수상작 8 :

+1

전체 경고 '-Wall -Werror -pedantic'를 사용하여 컴파일을 시도하면 오류가 발생합니다. – Deduplicator

+0

'strcpy (R2Name [X], 이름 [Y]);'X와 Y는 별도로 관리해야합니다. – BLUEPIXY

답변

0

문제는 R2Name [I]로 복사하는하지만 난 2 매 반복, 그래서 단지 R2Name [0], R2Name [2] 등 증가한다는 것입니다 작성하십시오. m은 매번 1 씩 증가하므로 문제를 해결해야하는 R2Name [m]에 복사 할 수 있습니다.