我必须在C中读取文件并创建int**
。
这是文件:
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 (...)
为什么在{for循环的第二次迭代中nodos[0][0] = -1163005939
?
解
LOL,就是这样:
if(i==0){
nodos[numNodo] = (int *) malloc (NUMERO_NODOS*sizeof(int));
}
我无法相信我没有看到它。谢谢MikeCAT !!!
答案 0 :(得分:0)
致命错误:
contactoNodo
的值来调用未定义行为。警告:
malloc
,以避免缓冲区溢出。malloc()
in C。试试这个:
fgets()