El problema planteado es el siguiente: leer un texto de un archivo y traducirlo a morse. Esa traducción debe guardarse en un archivo nuevo.
Mi problema es que no sé como hacer para que el texto ya traducido se imprima en el archivo. Tal y como está, permite escribir un texto cualquiera que determines de antemano, pero no el resultado de la función.
Y, ya que estamos, me gustaría saber por qué el bucle no traduce bien. Está bien hecho porque la función independiente funciona, pero en ese programa, no.
Muchas gracias de antemano.
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cifrarmorse (char frase);
int main(int argc, char** argv){
FILE *fichero,*fichero2;
int i=0,a,b,vector[100];
fichero=fopen("entrada7.txt","r");
if(fichero==NULL){
printf("Error.\n");
exit(1);
}
else{
printf("El contenido del archivo es:\n\t");
while (feof(fichero) == 0){
fgets(vector,100,fichero);
puts(vector);
}
}
fclose(fichero);
a=strlen(vector);
for (i=0; i<a; i++){
cifrarmorse(vector[i]);
b=cifrarmorse(vector[i]);
}
printf("\n");
fichero2=fopen("salida7","w+");
if(fichero2==NULL){
printf("Error.\n");
exit(1);
}
fprintf(fichero2,"IMPRIME LO QUE ESCRIBA AQUI");
/*fprintf(FILE *salida7, char *w){*/
fclose(fichero2);
return 0;
}
int cifrarmorse (char frase){
switch (frase){
case 'a':
case 'A': printf("·- ");
break;
case 'b':
case 'B': printf("-··· ");
break;
case 'c':
case 'C': printf("-·-· ");
break;
case 'd':
case 'D': printf("-·· ");
break;
case 'e':
case 'E': printf("· ");
break;
case 'f':
case 'F': printf("··-· ");
break;
case 'g':
case 'G': printf("--· ");
break;
case 'h':
case 'H': printf("···· ");
break;
case 'i':
case 'I': printf("·· ");
break;
case 'j':
case 'J': printf("·--- ");
break;
case 'k':
case 'K': printf("-·- ");
break;
case 'l':
case 'L': printf("·-·· ");
break;
case 'm':
case 'M': printf("-- ");
break;
case 'n':
case 'N': printf("-· ");
break;
case 'o':
case 'O': printf("--- ");
break;
case 'p':
case 'P': printf("·--· ");
break;
case 'q':
case 'Q': printf("--·- ");
break;
case 'r':
case 'R': printf("·-· ");
break;
case 's':
case 'S': printf("··· ");
break;
case 't':
case 'T': printf("- ");
break;
case 'u':
case 'U': printf("··- ");
break;
case 'v':
case 'V': printf("···- ");
break;
case 'w':
case 'W': printf("·-- ");
break;
case 'x':
case 'X': printf("-··- ");
break;
case 'y':
case 'Y': printf("-·-- ");
break;
case 'z':
case 'Z': printf("--·· ");
break;
case '0': printf("----- ");
break;
case '1': printf("·---- ");
break;
case '2': printf("··--- ");
break;
case '3': printf("···-- ");
break;
case '4': printf("····- ");
break;
case '5': printf("····· ");
break;
case '6': printf("-···· ");
break;
case '7': printf("--··· ");
break;
case '8': printf("---·· ");
break;
case '9': printf("----· ");
break;
case '.': printf("·-·-·- ");
break;
case ',': printf("--··-- ");
break;
case '?': printf("··--·· ");
break;
case '"': printf("·-··-· ");
break;
case ' ': printf(" ");
break;
}
}