내 프로그램에서 한 함수에서 다른 함수로 텍스트를 전달하는 스레드 시퀀스 내에서 사용되는 char* buffer
이 있지만 텍스트가 프로그램의 런타임을 통해 다릅니다. 내가 묻는 질문은 어떤 기능을 사용하여 char*
에서 이전에 사용한 텍스트를 지울 수 있습니까?(char *)의 버퍼를 지우는 방법은 무엇입니까?
int GameUtils::GetText(char *text)
{
for(int i=0; i<LINES_OF_TEXT; i++)
{
if(line[i][0]!=0)
{
strcpy(text, line[i]);
MessageBox(0, text, 0, 0);
line[i][0]=0;
return 1;
}
}
return 0;
}
line
는 예컨대 다음과 같이 정의된다 :
예를 들어, I는 다음과 같은 코드가 char GameUtils::line[2][32];
(코드가 실행되는 동안) 메시지 박스가 화면에 출력된다. 텍스트 필드에 임의의 정크 문자가 생깁니다. 아무도 왜 이것이라고 말할 수 있습니까?
또한! 선은 이전 질문에서 언급 한대로 할당됩니다. line
를 할당
기능은 다음과 같습니다
는for (int x=0; x<((int)(strlen(szLine)+1)); x++)
{
if (szLine[x]==' ' || szLine[x]=='\0')
{
m=x;
for (y=0, z=n; z<m; y++, z++)
{
line[w][y]=szLine[z];
}
n=x+1;
w++;
}
}
위의 기능은 단순히 내 게임 인터페이스에서 전달되는 매개 변수 szLine[512]
를 받아 새로운 매개 변수로 각각의 공간을 assorting 라인을 분할합니다. 일례로서
/msg <player> <message>
함수는 각각 line
변수 각 개별 단어를 지정할 것이다.
기능 완료 후. line
은 다음과 같을 것입니다
line[0] = /msg
line[1] = <player>
line[2] = <message>
그럼 내 질문은 전체적으로 다음과 같습니다. 이 문제에 대해 가장 깨끗하고 가장 적절한 접근법을 취하고 있습니까? 그렇지 않다면 누구든지 나에게이 문제에 접근하는 더 좋은 방법을 보여줄 수 있습니까? 또한, 아무도 나에게 왜 text
매개 변수에서 메시지 상자가 실행될 때 정크 문자를 받고 있는지 설명 할 수 있습니까?
편집
내 제출 한 질문의 미리보기를 본 후, 나는 char GameUtils::line[2][32]
을 2 차원 배열로 정의했다. 나는 이것을 시험하기 위해 일찍 끝냈다. 이제는 이것이 내 문제의 원인이 될 수 있음을 이해합니다. 누구든지이 변수에 입력 할 수있는 매개 변수의 정확한 양을 모르는 경우이를 대체 할 사람을 제안 할 수 있습니까? 사용자는 "/ help", "/ msg", "/ whois", "/ create"와 같이 매번 다른 요청을 실행할 수 있습니다 ...
문자열/버퍼를 어떻게 할당합니까? – Dai
line = malloc (sizeof (char) * 1024); – user3251225
'char *'는 버퍼가 아닙니다. 버퍼에 대한 포인터입니다. –