임의의 인덱스 주위에서 문자열을 구문 분석하려고합니다. 내 간단한 테스트 프로그램에서 나는 입력 문자열을 읽고 나서 memcpy를 사용하여 문자열을 구문 분석했다.Segfault가 char *를 토큰으로 구문 분석 중
테스트를 위해 입력란에 "this text"를 입력하고 있습니다. readInput 함수는 getline (& 입력, & 크기, stdnin)을 호출하고 입력 포인터를 반환하는 함수입니다.
int main(){
char *input;
input = readInput();
int parseAround = 4;
char *token1;
char *token2;
memcpy(token1, inputBuffer, 4);
printf("token: %s\n", token1); //prints "this"
memcpy(token1, inputBuffer + (parseAround+1), 4);
//when changed to memcpy(token2,...); segfaults
printf("token: %s\n", token1); //prints "text"
free(input);
return 0;
}
그러나 token1이 아닌 token2를 사용하도록 두 번째 memcpy를 변경하면 세그먼트 오류가 발생합니다. 왜 이런거야?
어느'token1' 느와르'token2'가 초기화 당신의로 원하는 부분을 복사 . 따라서 그들에게'memcpy '할 때, 당신은 무작위 로케 케이 언에 복사하고, 당신은 실패합니다. – NickStoughton
'memcpy (token1, inputBuffer, 4);'는'token'에 할당 된 메모리가 없습니다. –