Имам много лесна функция, която ми създава някои проблеми. Всичко, което искам да направя, е да върна подниз, след като го промених от низ. Но когато стартирам кода, имам грешка при сегментиране. Какво се случва с моя код:
#include <stdio.h>
#include <string.h>
const char *new_name(char str[])
{
char * pch;
char * last="";
char * pch2;
static char name[80];
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str,"/");
while (pch != NULL)
{
last=pch;
pch = strtok (NULL, "/");
}
pch2 = strtok (last,".");
strcpy(name, pch2);
strcat(name, ".ppm");
return name;
}
int main()
{
printf("New name: %s",new_name("/home/test/segmentation/test.pgm"));
return 0;
}
РЕДАКТИРАНЕ: Имам друг въпрос: искам да използвам връщането на тази функция като вход за друга функция, но тя приема char и върнатата стойност е const char. Как да направя преобразуването?
char* ch; for (ch = str + strlen(str) - 1; ch != '/'; --ch);
сега ch сочи към '/', сега можете също да подадете всичко към функцията, тъй като не променяте аргумента. - person AndersK   schedule 04.11.2013