Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: andie13 en 10 Noviembre 2016, 01:20 am



Título: fprintf de una función en archivo (C)
Publicado por: andie13 en 10 Noviembre 2016, 01:20 am
¡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.

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


Título: Re: fprintf de una función en archivo (C)
Publicado por: Kenji-chan en 16 Noviembre 2016, 23:09 pm
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;