|
아래 소스와 같이 edit에서 글을 입력해서 strtok를 이용해 문자열을 구분하여 출력하는겁니다.
의문이 나는것은 주석처리 한부분입니다.
1,2를 한 줄에 쓰면 3과 같다고 생각했습니다. 그런데 결과는 동일하지 않네요
그 이유를 모르겠습니다.
간단히 char string[20];
strcpy(string, Edit1->Text.t_str;
과
char* string = Edit1->Text.t_str();
의 차이점을 모르겠습니다.
질문도 제대로 못하는 초보였습니다.
다시 살펴보니 전에 질문했던 내용과 같은 내용인것 같아서
Edit2->Text.t_str(); 이함수에서 읽은 내용이 지역변수(?)가 되기 때문에 값이 유지가 안되어서 그런걸까요?
만약 그렇다면 strcpy에서도 올바른 값이 나오지 않아야 하는것 아닌가요?
void __fastcall TForm4::Button1Click(TObject *Sender)
{
char string[20];<------------------------1
strcpy(string, Edit1->Text.t_str());<---------2
//char* string = Edit1->Text.t_str();<--------3
char token[10];
strcpy(token, Edit2->Text.t_str());
char* temp;
// char* token = Edit2->Text.t_str();
temp = strtok(string, token);
Memo1->Lines->Add(temp);
while(temp != NULL)
{
temp = strtok(NULL, token);
Memo1->Lines->Add(temp);
}
}
|