-4
Мне нужно прочитать файл на C и создать int**
.читать int ** из файла C
Это файл:
2 -1,1,1,0,0,1 1,-1,0,1,0
Я делаю это:
FILE *fp = fopen("grafo.txt", "r");
char line[100];
int numLinea = 0;
char** tokens;
while (1) {
if (fgets(line,150, fp) == NULL) break;
if(numLinea == 0){
NUMERO_NODOS = atoi(line);
nodos = (int **)malloc (NUMERO_NODOS*sizeof(int *));
}else{
tokens = str_split(line, ',');
if (tokens) {
for (int i = 0; *(tokens + i); i++) {
char* contactoNodo;
strcpy(contactoNodo, *(tokens + i));
int numNodo = numLinea-1;
nodos[numNodo] = (int *) malloc (NUMERO_NODOS*sizeof(int));
nodos[numNodo][i] = atoi(contactoNodo);
printf("nodos[%i][%i] = %i\n",numNodo,i,nodos[numNodo][i]);
printf("nodos[0][0] = %i\n",nodos[0][0]);
//free(contactoNodo);
}
printf("nodos[0][0] = %i\n",nodos[0][0]);
//free(tokens);
}
}
numLinea++;
//printf("%3d: %s", i, line);
}
И это выход:
nodos[0][0] = -1 nodos[0][0] = -1 nodos[0][1] = 1 nodos[0][0] = -1163005939 (...)
Почему nodos[0][0] = -1163005939
во второй итерации цикл for?
РЕШЕНИЕ
LOL, это было что:
if(i==0){
nodos[numNodo] = (int *) malloc (NUMERO_NODOS*sizeof(int));
}
Я не могу поверить, что я не видел его. Спасибо MikeCAT !!!
Пожалуйста, пост полный код, мы не должны догадаться, что, например, 'NUMERO_NODOS' должен быть. – EOF
Вы вызывали * неопределенное поведение *, используя значение неинициализированной переменной 'contactoNodo', имеющее время автоматического хранения, которое является индексированным. – MikeCAT
Использование значения в буфере, выделенном через 'malloc' и не инициализированное, также вызывает * неопределенное поведение *. – MikeCAT