olá pessoal, venho andado procurando em forums e tópicos por ae e até agora não achei nada que ajudasse a resolver meu problema. bom, estou desenvolvendo um trabalho para a faculdade envolvendo comunicação serial entre computadores, mas o meu problema se encontra na hora de copiar o dado para um campo da struct. o meu objetivo nesta etapa do trabalho é: carregar as linhas de um arquivo de texto para uma lista encadeada dinâmica, tratando individualmente seus campos. aqui vão exemplos de linhas no arquivo de texto: /* 1 + 3 5 2 - 3 2 3 * 3 4 */ cada caracter (separado por 1 único espaço) representa um campo a ser preenchido na struct, ( os sinais serão tratados como char por enquanto). minha lógica consiste em carregar a linha toda em uma string e ir separando em uma string aux a primeira palavra (tirando o espaço). depois, converter para int( quando nescessário) e inserir no campo da struct. depois segue a lógica de lista encadeada direta normal.. eis a struct no "arquivo.h": struct tdados { int nop, op1, op2; char sinal; }; struct tnodo { struct tdados dado; struct tnodo * next; } ; o código ( na função que dá o erro) : void load (char * fn, struct tnodo ** head) { // pré-condicao: arquivo existir; // pós-condicao: fila de strings carregadas em uma estrutura; struct tnodo * aux = NULL; struct tnodo * ult = NULL; char *linha = (char*) malloc (255 * sizeof (char)); char *frente = (char*) malloc (255 * sizeof(char)); FILE * fp = fopen (fn,"r"); while (!eof(fp)) { fgets (linha, 100, fp); // pega a linha inteira do arquivo; if (head == NULL) { head = (struct tnodo *) malloc (sizeof(struct tnodo)); //adcionar elementos em *head car(linha, frente); head->dado.nop = atoi(frente); cdr(linha,linha); car (linha, frente); strcpy (head->dado.sinal,frente); cdr (linha,linha); car (linha, frente); head->dado.op1 = atoi (frente); cdr (linha, linha); car (linha, frente); head->op2 = atoi (frente); //add na lista head->next = NULL; ult = head->next; } else { aux = (struct tnodo *) malloc (sizeof(struct tnodo)); //add elementos em *aux; car(linha, frente); aux->dado.nop = atoi(frente); cdr(linha,linha); car (linha, frente); strcpy (aux->dado.sinal,frente); cdr (linha,linha); car (linha, frente); aux->dado.op1 = atoi (frente); cdr (linha, linha); car (linha, frente); aux->op2 = atoi (frente); //add na fila; ult->next = *aux; ult->next = NULL; } } else printf("Erro na leitura do arquivo");; close(fp); }; a funcao void car consiste em pegar a primeira palavra de determinada string, e a void cdr consiste em pegar o resto. O seguinte erro acontece no compilador : " error: request for member 'dado' in something not a structure or union " em todas as linhas que eu tento copiar para a struct. se alguém puder me ajudar, fico grato