я написал эту функцию для домашнего задания я делаю в школе:Моего getToken не работает по первому зову
char* getToken(char buffer[], int pos)
{
int i;
char copy[350], *token, *del = ",\n";
strcpy(copy, buffer);
token = strtok(copy, del);
for (i = 1; i < pos; i++)
token = strtok(NULL, del);
return token;
}
Я хочу его вернуть маркер в заданном положении без искажая исходный массив символов. Проблема в том, что он возвращает мусор при первом вызове, но он работает так, как ожидалось, во всех последующих вызовах. Это должно быть очень простое исправление, но я весь день программировал, и мне нужен свежий набор глаз, чтобы поддержать меня. (Hardcoded 350 задан в этом задании домашней работы, буфер не должен превышать 349 символов)
'token' указывает на часть локальной автоматической переменной. Также 'token' нужен NULL check – BLUEPIXY
Чтобы заставить эту функцию работать, массив' copy' должен быть 'static', или вам нужно передать массив' copy' в функцию. Так же как и массив 'copy' исчезает, как только функция возвращается, и поэтому возвращаемый указатель недействителен. – user3386109
@ user3386109: Или 'malloc()' 'copy'. – EOF