У меня ошибка сегментации в следующем коде, и я действительно не вижу, что я пропустил, цель этого кода — извлечь строки .csv и поместить их в двумерный массив, созданный с помощью двойного указателя.
Ошибка seg находится в последнем назначении открытых текстов [i][j] для 1-й строки файла csv.
Ваша помощь будет высоко оценена (по этой проблеме со вчерашнего дня...)
int main(){
int n=48; //nbers of columns in csv file
int m=60; //nbers of lines in csv file
int cpt,i,j;
cpt=0;
i=0;
FILE *fp;
char *token;
const char s[2] = ",";
unsigned char **plaintexts;
plaintexts = malloc(sizeof(*plaintexts) * m);
char *str=malloc(sizeof(char)*15*n); //maximum 15 char per box
fp = fopen("aes_traces.csv","r");
while(fgets(str,15*n,fp)!=NULL){
plaintexts[i] = malloc(sizeof(*plaintexts[i]) * n);
token = strtok(str,s);
j=0;
while(token != NULL){
printf("%s\n", token);
token = strtok(NULL,s);
plaintexts[i][j]=(unsigned char) (*token);
j++;
}
i++;
free(str);
free(token);
}
fclose(fp);
}
i
,j
,n
иtoken
при возникновении ошибки? - person David Schwartz   schedule 29.12.2015while (token != NULL)
, вы можете использовать*token
перед назначениемtoken
в теле цикла, но не после. Вы также теряете самый первый токен. Подумайте, как решить обе проблемы сразу одним простым изменением. - person n. 1.8e9-where's-my-share m.   schedule 29.12.2015