我有一個非常非常簡單的功能,給我一些問題。我想要做的就是在從字符串中更改後返回一個子字符串。但是當我運行代碼時,我有分段錯誤。什麼是我的代碼發生的事情:函數返回字符串不工作 - 分段錯誤
#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。如何進行轉換?
這裏使用的strtok似乎矯枉過正,用一個簡單的循環由年底'字符* CH循環找到最後/; for(ch = str + strlen(str) - 1; ch!='/'; --ch);'現在ch指向'/',因爲您沒有修改參數。 –