fprintf de una función en archivo (C)

Iniciado por andie13, 10 Noviembre 2016, 01:20 AM

0 Miembros y 1 Visitante están viendo este tema.

andie13

¡Hola!
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.


#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;
   }        
}

Kenji-chan

primero tienes mal declarado tu vecot

int main(int argc, char** argv){
    FILE *fichero,*fichero2;
    int i=0,a,b, vector[100];

int main(int argc, char** argv){
    FILE *fichero,*fichero2;
    int i=0,a,b;
    char vector[100];


segundo tienes que emular los puntos

int cifrarmorse (char frase){
    switch (frase){
        case 'a':
        case 'A': printf("%c- ", 46);
            break;
        case 'b':
        case 'B': printf("-%c%c%c ", 46,46,46);
            break;