我在幫助函數中傳遞一個char * str [],然後向其中添加內容,但在主函數中它的值保持不變。char * str []通過引用不起作用
從主我打電話letterCombinations功能,它調用幫助功能 在幫助我編輯wwhihc改變有,但沒有反映的char * STR [1]的valuees在字母組合功能
請幫我爲什麼它不工作
help(char *str[],char* curr,int index,char* digits,char** a,int *k)
{
if(strlen(curr)==strlen(digits))
{
printf("%d",*k);
str[*k]=(char*)malloc(strlen(digits)+1);
str[*k]=curr;
printf("%s %s %d\n",curr,str[*k],*k);
*k=*k+1;
return ;
}
int i;
char* loop=a[digits[index]-'0'];
int l=strlen(loop);
for(i=0;i<l;i++)
{
curr[index]=loop[i];
help(str,curr,index+1,digits,a,k);
curr[index]='\0';
}
}
char** letterCombinations(char* digits, int* returnSize) {
char *str[100];
int i=0;
char* curr=malloc(sizeof(strlen(digits)+1));
char** a=(char**)malloc(10*sizeof(char*));
int siz=0;
a[0]="";
a[1]="";
a[2]="abc";
a[3]="def";
a[4]="ghi";
a[5]="jkl";
a[6]="mno";
a[7]="pqrs";
a[8]="tuv";
a[9]="wxyz";
help(str, curr, 0, digits,a,&siz);
printf(" %d",siz);
for(i=0;i<siz;i++)
{
printf(" s %s",str[i]);
}
// *returnSize=siz;
return str;
}
'char * str [100]'聲明一個100個指針的數組,每個指針都指向無處,因爲它們沒有被初始化。這不是你想要的。 – Aganju
我在幫助函數str [* k] =(char *)malloc(strlen(digits)+1)中分配內存; – skag
'return str;':'str'是局部變量。 – BLUEPIXY