ya pude hacerlo, pero ahora tengo otro problemita

recorro el archivo y saco las palabras en orden, y llamo a la funcion insertarenlista para meter todas las palabras en orden en una lista, al parecer si la llena o eso creo yo, pero al momento de imprimirla me muestra simbolos extraños, no se si es que la lleno mal, o que la imprimo mal o lo que sea, alguien sabe que tengo mal?
Código PHP:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct nodo
{
char palabra[30];
struct nodo*sig;
};
typedef struct nodo listaPalabra;
listaPalabra * crearLista(listaPalabra *inicio)
{
inicio=NULL;
return inicio;
}
listaPalabra *insertarEnLista(char palabra[30],listaPalabra *inicio)
{
listaPalabra *nuevoNodo;
listaPalabra *aux;
nuevoNodo=(listaPalabra*)malloc(sizeof(listaPalabra));
nuevoNodo->palabra[30]=palabra[30];
nuevoNodo->sig=NULL;
if (inicio == NULL)
{
inicio=nuevoNodo;
}
else
{
aux=inicio;
while (aux->sig !=NULL)
{
aux=aux->sig;
}
aux->sig=nuevoNodo;
}
return inicio;
}
void imprimir (listaPalabra *lista)
{
listaPalabra *auxiliar;
auxiliar=lista;
while (auxiliar!=NULL)
{
printf("%s \n",auxiliar->palabra);
auxiliar=auxiliar->sig;
}
}
void Jugar(){
system ("color b");
system("cls");
int cantidad,i,j,aux,x,indice;
char caracter,palabra[30];
printf("\n\t\t\t ¿Con cuantas palabras desea jugar? ");
scanf("%d",&cantidad);
x=1; i=1; j=0;
listaPalabra*lista;
lista=crearLista(lista);
while (i<=cantidad)
{
FILE *archivo;
archivo= fopen("prueba.txt","r");
if (archivo== NULL)
{
printf("El archivo no se encuentra");}
else
{
while (feof(archivo)==0)
{
do
{
caracter=fgetc(archivo);
}while(caracter=='\n');
if (caracter!=';')
{
palabra[j]=caracter;
j++;
}
else
{
caracter=fgetc(archivo);
aux= (int)(caracter-48);
if (aux==i)
{
lista=insertarEnLista(palabra,lista);
imprimir(lista);
}
indice=0;
while (indice<20)
{
palabra[indice]=0;
indice++;
}
j=0;
}
}
close(archivo);
}
i++;
}
getch();
}
void menu()
{char resp;
do
{ system ("color b");
system("cls");
printf("\n\n\t\t\t* * * * * MENU DE OPCIONES * * * * *");
printf("\n\t\t---------------------------------------------------");
printf("\n\t\t\t Juego de el ahorcado ");
printf("\n\t\t---------------------------------------------------\n\n\n\n");
printf("\t\t\t\t (1) Jugar \n");
printf("\t\t\t\t (0) salir\n");
do
resp=getch();
while (resp<'0' || resp>'1');
switch(resp)
{ case '1': Jugar();
break;
case '0':
break;
}
}
while(resp!='0');
}
int main()
{
menu();
return(0);
}