Ayuda programa en c

Denunciar
-
Hola, buenas tardes tengo un problema a la hora de agregar una cadena en una lista .El programa es el siguiente y consisten en un traductor el cual resive desde un txt las palabras .


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct nodo{
char dato;
struct nodo*siguiente;
struct nodo*atras;
char*palabra;
};
typedef struct nodo NodoLista;
typedef struct nodo *NodoListaPtr;

typedef struct{
char *espanol;
char *aleman;

}traductor;
traductor *tra;
void vaciar(char temporal[]);
void copiar(char temporal[],int i);
//void tradu();


//////////Insertar letra en una lista
void inserta(NodoListaPtr*inicio,NodoListaPtr*fin, char*palabra){

NodoListaPtr nuevoPtr;
NodoListaPtr actualPtr;
nuevoPtr=(NodoListaPtr)malloc(sizeof(NodoLista));
if(nuevoPtr!=NULL){
nuevoPtr->palabra=palabra;
nuevoPtr->siguiente=NULL;
nuevoPtr->atras=NULL;

actualPtr = *inicio;
//La lista esta vacia,insertar el primer nodo
if(actualPtr==NULL){
  • inicio=nuevoPtr;
  • fin=nuevoPtr;

}else{
//opcion 1:Insertar al inicio de la lista

nuevoPtr->siguiente=actualPtr;
actualPtr->atras=nuevoPtr;
  • inicio=nuevoPtr;


}//end else
}//end else

}//end if

//Imprimir lista
void imprimirLista(NodoListaPtr actualPtr){
//si la lista esta vacia
if(actualPtr==NULL){
printf("La lista esta vacia.\n\n");
}else{
printf("\nLa lista es:\n");
//ahora recorremos la lista hacia la derecha
while(actualPtr!=NULL){
printf("%c-->",actualPtr->dato);
actualPtr=actualPtr->siguiente;
}
printf("NULL\n\n");
}
}


void guardarVariable(NodoListaPtr *aleman,NodoListaPtr *finAleman,NodoListaPtr *finEspanol,NodoListaPtr *espanol){
char temporal[50];
int contador,i,j;
char aux;

FILE * f= fopen("traductor.txt","r");

while(!feof(f)){
fgets(temporal,50,f);//leer toda la linea //nonde se almacena/max elementos/desde fichero

contador++;//pasa a siguienmte linea

}
rewind(f);//regresa el cursor al inicio

// tra=(traductor*)malloc(contador*sizeof(traductor));//reservamos memoria para el arreglo
//salir del for hasta llegar al final del fichero
for(i=0;!feof(f);i++){
vaciar(temporal);
aux='0';
for(j=0;aux!=' ';j++){
aux=fgetc(f);
if(aux!=' '){
temporal[j]=aux;//En temporal esta guardada la palabra en español y la pasamos a la variable aux
copiar(temporal,i);
inserta(inicioEspanol,finEspanol,temporal[j]);

}
}

fgets(temporal,50,f);//copeamos el sobrante =aleman
//tra[i].aleman=(temporal);
inserta(aleman,finAleman,temporal);
// printf("Espanol:%s Aleman:%s",tra[i].espanol,tra[i].aleman);
}
printf("Palabras en español:\n");
imprimirLista(*espanol);
printf("Palabras en Aleman:\n");
imprimirLista(*aleman);
fclose(f);


}


void vaciar(char temporal[]){
int i;
for(i=0;i<50;i++){
temporal[i]='\0';
}
}

void copiar(char temporal[],int i){
//meter el contenido de temporal a la palabra español
int n=strlen(temporal)+1;//cuenta cuantos caracteres existen en temporal +1 para contar '\0'
tra[i].espanol=(char*)malloc(n*sizeof(char));//reservamos memoria para string

strcpy(tra[i].espanol,temporal);//copeamos un string i=identificamos el vector

}


/*void tradu(){
int i,j,temp;
char aux[50];
FILE * f= fopen("traductor.txt","r");
printf("Introduce la palabra que decea buscar:");
scanf("%s",&aux);

for(i=0;i<50&&temp==0;i++){
j=strcmp(aux,tra[i].aleman);
if(j){
printf("La traduccion de %s es: %s.\n",tra[i].espanol,tra[i].aleman);
temp=1;
}
}


fclose(f);

}
  • /




Configuración: Windows / Chrome 79.0.3945.130