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