我想將文件的每一行存儲在一個二維數組中,並且指向每行的anthor數組(所以我可以識別每一行),我需要將這個指針數組傳遞給一個函數所以我可以操縱我的臺詞,我闖到大知道該怎麼做傳遞指向C函數的動態數組
我有這樣的代碼讀取和存儲在陣列
char ligne[MAX];
//open end test the file
FILE* fichier = fopen("csp.txt","r");
if(fichier == NULL){
printf("can't open the file \n");
return EXIT_FAILURE;
}
//the first line in the file contain number of other lines
fgets(ligne, sizeof(ligne), fichier);
int nbrTaille = strtol(ligne, NULL, 10);
//array of pointers
char (*tab)[nbrTaille] = malloc(nbrTaille * sizeof(ligne));
int i = 0;
//tab array point each line
while(fgets(ligne, sizeof(ligne), fichier)){
if(ligne == NULL) EXIT_FAILURE;
strncpy(tab[i], ligne, strlen(ligne));
printf("line%d : %s\n", i, tab[i]);
i++;
}
//call the funnction by passing array of pointers and the number of lines
allDiff(tab, nbrTaille);
我閱讀該文件是
2
1 2
2 3
收到t他通過函數數組我試過,但它不工作
void allDiff(char** T, int taille)
您的評論//指針數組不準確。這不會聲明一個指針數組;它聲明瞭一個指向數組的指針。它們是有區別的。該decl應該是char(* tab)[MAX] = ...'。如果你想爲每個字符串*進行動態分配,那麼所有這些都需要改變。和不相關的,'if(ligne == NULL)EXIT_FAILURE'是毫無價值的。 'ligne'是一個自動數組,因此*從不*爲'NULL'。 – WhozCraig
我可以有這種類型的數組(例如:[1] [1,2],[2] [2,3])沒有動態分配(以便每行「我」包含列「j」我的文件行[我] [j])?? – devhicham