在C中创建图形时出错

时间:2014-11-29 12:53:53

标签: c

我正在尝试从矩阵生成图表,但我遇到了一些问题,这里是代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 10
#define MAX_P 20

//Declaracion del TDA cola
typedef struct Node {
   int rafaga;
   int id;
   struct Node *dret;
   struct Node *esq;
   int fiscals;
   int funcionaris;
   int advocats;
} tipoNodo;

typedef tipoNodo *pNodo; // tipo para declarar nodos a un entero

int nodes = 0, funcionarisTotals = 0, advocatsTotals = 0, fiscalsTotals = 0;
Node llista[MAX_N];
int graf[MAX_N*2][3];

void crearGraf(int graf[MAX_N*2][3]) {
    FILE *pf;
    char caracter; // variable de tipo caracter que va a servir para almacenar los caracteres leidos del archivo
    int valor, o, d;
    pf = fopen ("graf.txt","r"); // se abre el archivo en forma de lectura
    if (!pf) {  //en el caso que no se pueda abrir el archivo se manda un mensaje de error
        printf ("ERROR: el fichero  no existe o no se puede abrir\n");
        exit(-1); //mensaje "presiona una tecla para continuar"
    }
    else {
        int arestes = 0;
        while (!feof (pf)) {
            int j = 0;
            nodes = int ((caracter=fgetc(pf))-'0'); 
            printf ("El graf te %d\n nodes", nodes);
            for(int i = 0 ; i < nodes ; i++) {
                llista->[i].id = i;
                llista.[i].rafaga = 1;
            }
            caracter = fgetc(pf);
            o = int ((caracter = fgetc(pf))-'0'); //nodo origen
            caracter = fgetc(pf);
            d = int ((caracter = fgetc(pf))-'0');//nodo destino
            caracter = fgetc(pf);
            valor = int ((caracter =fgetc(pf))-'0');//pes de l'aresta
            if (o < 0 || d < 0 || valor < 0) break;
            printf ("%d %d %d\n",o,d,valor);
            graf[o][d] = valor; // es guarda el pes de l'aresta que va de X -> Y a la matriu
            arestes++;
        }
        fclose (pf);//se cierra el fichero
        for(int j = 0; j<arestes ; j++) {
            if(j == 0) {
                llista[graf[j][0]]->dret = llista[graf[j][1]]; // enllacem l'aresta primera
            } 
            if(j != 0 && (graf[j-1][0] == graf[j][0])) {
                llista[graf[j][0]]->esq = llista[graf[j][1]]; // enllacem l'aresta esquerra
            }
            else {
                llista[graf[j][0]]->dret = llista[graf[j][1]]; // enllacem l'aresta dreta
            }
        }
    }
}

int main (void)
{
    int graf[MAX_N][MAX_N];
    crearGraf(graf);
    return 0;
}

我得到的错误是:

SC.c:57: error: expected unqualified-id before ‘[’ token
SC.c:58: error: expected unqualified-id before ‘[’ token

for循环中的这两行是什么:

for(int i = 0 ; i < nodes ; i++) {
                llista->[i].id = i;
                llista.[i].rafaga = 1;
            }

我想我真的不明白变量的TYPE在这里工作。 有人可以帮我一把吗?我一直在努力寻找类似的问题,但我无法修复它。

谢谢!

1 个答案:

答案 0 :(得分:1)

将这两行更改为

llista[i].id = i;
llista[i].rafaga = 1;

您将访问您似乎尝试访问的内容。

使用->运算符取消引用指针,而您只想访问如上所述的数组元素。我不能说出代码的其余部分的正确性,但这些更改至少应该消除编译器错误。