안녕하세요
45.2 문자열 자르기에서 하기와 같은 코드로 설명을 해주셧습니다.
char* s1 = malloc(sizeof(char) * 30);
strcpy(s1, "The Little Prince");
char* ptr = strtok(s1, " ");
while (ptr != NULL)
{
printf("%s\n", ptr);
ptr = strtok(NULL, " ");
}
free(s1);
제가 해당코드를 넣고 해보니 ptr에서 s1에 접근하여 공백을 자름으로
The, Little, Peince 각 공백이 잘릴때마다 s1 과 ptr이 같은 문자열이 저장되던데
굳이 읽기전용 이라는 ptr 포인터를 다시 선언해서 해야되는 이유가 있나요?
하기와 같이 s1에서 바로 공백을 잘라도 s1에서 저장되는 값이 같아지는거 같은데
설명 부탁드립니다.
{
char* s1 = malloc(sizeof(char) * 30);
strcpy(s1, "The Little Prince");
s1 = strtok(s1, " ");
while (s1 != NULL)
{
printf("%s\n", s1);
s1 = strtok(NULL, " ");
}
free(s1);
return 0;
}
원본 문자열을 가리키는 ptr을 직접 바꿔버리면
모든 작업이 끝난 다음에 원본 문자열을 출력할 수 있는 방법이 있을까요?
모든 작업이 끝난 후 %s로 원본 문자열을 출력할 수 있는지 확인해보세요.
메모리를 할당해서 처음 시작 위치를 알고 있는 포인터는 유지하고,
위치를 바꾸며 작업하는 별도의 포인터를 만드는 코딩이 일반적으로 널리 쓰이는 이유입니다.