У меня проблемы с использованием этого указателя на указатели на символы, представляющие массив строк.
Я должен разыменовать его с некоторым смещением i, чтобы получить i-ю строку, а затем разыменовать результат с некоторым другое смещение j, чтобы получить j-й символ такой строки.
В моем понимании и при условии, что индексы являются входящими, я мог бы сделать это несколькими способами syntacti c, например, чтобы получить 6-й символ второй строки:
char* myFun(char** strs, int size){
char a;
int i=2,j=6;
a=strs[i][j];
a=*(strs[i]+j);
a=(*strs+i)[j];
a=*(*(strs+i)+j);
}
Тем не менее, я получаю ошибку времени выполнения runtime error: load of null pointer of type 'char'
в строке for
l oop в следующем коде, возможно, ошибка не та, которую я подозреваю, но именно поэтому я прошу вас о помощи.
char * myFn(char ** strs, int strsSize){
if(*strs=NULL || strsSize==0){
printf("empty first string, or empty array of strings\n");
return NULL;
}
int i,pf_s=1;
char * pf_str=(char*)calloc(pf_s,sizeof(char));
for(i=0;*(strs[0]+i)!='\0';++i){// <-------- runtime error
if(!(i<pf_s-2)){
pf_s=pf_s*2;
pf_str=(char*)realloc(pf_str,2*pf_s*sizeof(char));
}
*(pf_str+i)=(*strs)[i];
}
pf_str[i]='\0';
pf_str=(char*)realloc(pf_str,i+1*sizeof(char));
printf("%s\n",pf_str);
return pf_str;
}