我是新的c程序員。我定義了一個函數,它解析一行並生成令牌。每個令牌都將保存在一個令牌數組中。所以我爲此創建了一個字符串數組。我定義的函數返回這個數組。現在我想返回的數組分配給新的陣列我得到一個錯誤:將返回的指針賦給一個新的數組
incompatible types when assigning to type ‘char *[5]’ from type ‘char **’.
所以我沒有任何想法如何處理這個問題。這裏是整個代碼;
#include <string.h>
#include <stdio.h>
char ** parseLine(char * str){
char del[2]=",";
char * token;
//Array of strings
char * tokenArr[5];
token=strtok(str,del);
int i=0;
while(token!=NULL && i<5){
//save each new token in the array of tokens
*(tokenArr+i)=*token;
token=strtok(NULL,del);
i++;
}
return tokenArr;
}
int main(int argc, char * argv []){
char str[120]="Achon, Adkins, 3459345,cs,usa";
char * tokenArray [5];
tokenArray=parseLine(str);
}
爲什麼返回指針的指針? 'char *'應該可以工作。 'char * parseLine(char * str)'應該解決這個問題。 –
@amitakCs您應該在函數中動態分配一個數組,並且在main中也使用相同類型的指針。 –
是的,@amitakCs指向正確。 'char * tokenArr = new char * [5];'動態創建數組。 –