ポインタに問題があります。プログラムでは、すべての単語を配列foldersName[]
に入れます。私はそれらを印刷するとき、配列内のすべての単語はOKですが、私は配列の1つのポインタの各単語のポインタの配列を返したいと思います。私の方法は:ポインタに関するトラブル - C
char** getTokens(char * path){
.
.//Getting tokens in array foldersName[];
.char foldersName[count][255];
.
char * tokens[actualCountOfFolders]; //How much folders in foldersName
int i;
for(i=0;i<count;i++){
tokens[i] = foldersName[i];
printf("Folders pointer %s \n",tokens[i]);
}
return tokens;
たとえば、私はfoldersName = {"C","Game","Halo 4","Map"}
です。 しかし、printf tokens[i]
の場合は、for
ループのように、{"C","Game","Halo 4","Map?"}
と表示されます。それを修正するには?
関数を呼び出した後、次のコードでこれを行うことはできますか?
char ** tokens =(char **) malloc(sizeof(char)*actualCountOfFolders);
tokens = getTokens(path);
int i = 0;
for(i =0;i<actualCountOfFolders;i++){
printf("Folders %s \n",tokens[i]);
}
関数が終了するとクリーンアップされる自動変数へのポインタを返さないでください。 – Unimportant
このトークンを参照してくださいhttp://stackoverflow.com/questions/11656532/returning-an-array-using-c –
あなたは 'トークン'のスペースを 'malloc'していますが、' tokens = getTokens(path); '割り当てられたメモリへのアクセスが失われます。 – Missu