좋아요, 그래서 기본적으로 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 :
전체 경고 '-Wall -Werror -pedantic'를 사용하여 컴파일을 시도하면 오류가 발생합니다. – Deduplicator
'strcpy (R2Name [X], 이름 [Y]);'X와 Y는 별도로 관리해야합니다. – BLUEPIXY