Я пытаюсь разобрать строку вокруг произвольного индекса. В моей простейшей тестовой программе я мог придумать, что у меня есть строка ввода, которую я прочитал, а затем сделаю memcpy для синтаксического анализа строки.Segfault в анализе char * в токенах
Для проверки этого я набираю текст «этот текст» в качестве ввода. 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;
}
Однако, когда я изменить второй тетср использовать token2, а не token1, я получаю ошибку сегментации. Почему это?
Ни '' token1' нуар token2' инициализируется ... они указывают на случайных местах , Таким образом, когда вы «memcpy» к ним, вы копируете случайную локализацию, и вы segfault. – NickStoughton
'memcpy (token1, inputBuffer, 4);' не имеет памяти, выделенной для 'токена'. –