Estoy haciendo un pequeño "compilador". Lo que debe hacer es traducir de mi lenguaje a lenguaje C para linux. El caso es que al cargar las palabras en un arrayList de char* lo carga bien dentro de la funcion cargaListaPalabras(codigoTraductor,listaPalabras); e imprime correctamente las palabras de listaPalabras, pero cuando intento imprimir las palabras de listaPalabras fuera de cargaListaPalabras(); no imprime nada....
Este es el codigo de cargaListaPalabras que funciona correctamente:
Código
void cargaListaPalabras(char* codigo,char* listaPalabras[]){ char palabra[100]=""; int posPalab=0; int posCodigo=0; int posListaPalabras=0; while(posCodigo<strlen(codigo)){ while( ((esLetra(codigo[posCodigo])>0) || (esNumero(codigo[posCodigo])>0)) && (codigo[posCodigo]!='\0')){ //lee letras y numeros hasta formar una palabra palabra[posPalab]=codigo[posCodigo]; posPalab++; posCodigo++; } palabra[posPalab]='\0'; //finaliza la palabra listaPalabras[posListaPalabras]=palabra; //guarda palabra en listaPalabra posListaPalabras++; posPalab=0; while( (esLetra(codigo[posCodigo])==0) && (codigo[posCodigo]!='\0') ){ //lee caracteres (comillas, puntos, coma) para guardarlos como una palabra individualmente palabra[posPalab]=codigo[posCodigo]; palabra[posPalab+1]='\0'; posCodigo++; posPalab=0; listaPalabras[posListaPalabras]=palabra; //guarda el caracter en listaPalabras posListaPalabras++; } } listaPalabras[posListaPalabras]="@fin@"; //palabra de fin de codigo. }
Los printf() de la funcion anterior imprimen el codigo correctamente. Pero cuando en la funcion main() escribo lo siguiente y no funciona el printf() y saca un salto de linea por palabra...
Código
char* listaPalabras[1000000]; int posListaPalabras=0; cargaListaPalabras(codigoTraductor,listaPalabras); posListaPalabras++; }
¿porque el printf() del bucle while() no me imprime lo mismo que los printf() de la funcion cargaListaPalabras()?
Gracias por las respuestas.