我想将文件的每一行存储在一个二维数组中,并且指向每一行的anthor数组(所以我可以识别每一行),我需要将这个指针数组传递给一个函数,这样我就可以操作我的行了,我d了解如何做到这一点
我有这个代码来读取和存储在数组中
heightForRowAtIndexPath:
我正在阅读的文件
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
答案 0 :(得分:1)
void function(char tab[][MAXLEN], ...);
这样做。
答案 1 :(得分:1)
我总是与父母和星号混淆。更简单的方法是声明一个双指针:
FormClosing
最后释放记忆:
char ** tab;
//you need to take care of errors. I am not doing it for simplicity
//tab = {pointer1, pointer2, pointer3, ...., pointerN} total memory needed N * sizeof(pointer)
tab = malloc(lines* sizeof(tab)); //how many pointers you want
for(i = 0; i < lines; i++){
tab[i] = malloc(MAX); //each string
}
编辑 完整代码
for(i = 0; i < lines; i++){
free(tab[i]);
}
free(tab);
答案 2 :(得分:0)
为了可读性和健全性,在创建数组或双指针之前输入dede C函数指针。
/* typedef the function pointer. An ftabptr points to a void function that
takes a char * */
typedef void (*ftabptr)(char *p);
/* create an uninitalised list of twenty of them */
int N = 20;
ftabptr *pointerlist = malloc(N * sizeof(ftabptr));
但是我不认为你真的想这样做。你可以写一个 运行程序,用功能表做奇怪的事情 指针,但通常你使用C以外的语言 想玩那个游戏(类似Lisp的语言等)。高水平 然后,语言通常会将C作为中间步骤发出。