Ich übergebe ein char * str [] in Hilfe-Funktion und dann Inhalte hinzufügen, aber in Hauptfunktion seine Werte unverändert sind.char * str [] übergeben als Referenz nicht funktioniert
Von Haupt Ich rufe letterCombinations Funktion und es ruft Hilfefunktion In Hilfe, die ich valuees von char * str bin der Bearbeitung [] wwhihc dort geändert werden, jedoch nicht in Buchstaben reflektiert Kombinationen funktionieren
Bitte helfen Sie mir, warum es funktioniert nicht
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]' deklariert ein Array von 100 Zeigern, von denen jeder ins Nirgendwo zeigt, da sie nicht initialisiert sind. Das ist kaum was du wolltest. – Aganju
Ich reserviere Speicher in Hilfefunktion str [* k] = (char *) malloc (strlen (Ziffern) +1); – skag
'return str;': 'str' ist eine lokale Variable. – BLUEPIXY