Может ли кто-нибудь объяснить, почему я получаю ошибку сегментации в следующем примере?Сегментация Неисправность при использовании strtok_r
#include <stdio.h>
#include <string.h>
int main(void) {
char *hello = "Hello World, Let me live.";
char *tokens[50];
strtok_r(hello, " ,", tokens);
int i = 0;
while(i < 5) {
printf("%s\n", tokens[i++]);
}
}
Спасибо тонну. :) –
Этот пример дает мне segfault на линии printf. gdb print token показывает 0xffffffffffffdad0 <Адрес 0xffffffffffffdad0 за пределами границ> Также получите эти два предупреждения при компиляции proj1.c: 33: 2: warning: неявное объявление функции 'strtok_r' [-Wimplicit-function-declaration] proj1.c: 33: 14: warning: присваивание делает указатель из целого без cast [включен по умолчанию] – schwiz
Извините, что я новичок, почему он не должен быть 'char * ptr = Hello;' с капиталом H? Кроме того, ответ Алока говорит, что первый раз, когда первый параметр должен быть «токенизирован», а затем последующие вызовы, он должен быть NULL, но, похоже, ваш пример просто называет его одним способом в цикле while? Спасибо за код btw –