Enviado em 10/01/2020 - 17:55h
Oi, gente! Eu tô fazendo um projeto de escola em que preciso ler um texto de um arquivo, convertê-lo em morse e escrever esse texto convertido em outro arquivo diferente. Eu consegui fazer todo o programa, mas na hora de escrever o texto convertido no arquivo, as frases tão ficando todas zoadas dentro arquivo. Alguém pode me ajudar a resolver o probelma? Ficarei grato.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/* Constantes */
#define T_MORSE 8
#define Q_LETRAS 26
#define Q_NUMEROS 10
#define Q_MORSE (Q_LETRAS+Q_NUMEROS)
#define MAX_STRING_SIZE 100
typedef struct{
char letras[5]; /* armazena a letra. A recebe como uma string , mas só usa a primeira letra */
char letrasMorse[T_MORSE];/* armazena os respectivos simbolos morse */
}alfabeto;
alfabeto l[Q_MORSE];
void codifica(const char *linha) {
int j=0, i=0;
FILE *fp;
fp = fopen("codificado.txt", "w");
while(i<strlen(linha)-1){ //lê a a frase inteira
while((toupper(linha[i]) != l[j].letras[0]) && (j< Q_MORSE)){
j++; // aponta para a proxima letra
}
if (toupper(linha[i]) == l[j].letras[0]){
fprintf(fp,"%s ", l[j].letrasMorse);
i++;
}else if (linha[i] == ' '){
fprintf(fp, "%c", " ");
i++;
}
j=0;
}
}
int main(){
int cont=0,j;
FILE *arch;
arch = fopen("morse.txt","r");
if( arch == NULL ){
printf("ERROR");
return 0;
}
else{
while(fscanf(arch,"%s%s",l[cont].letras,l[cont].letrasMorse) != EOF){
l[cont].letras[1] = '\0'; /* elimina caracteres indesejados */
for(j=0; l[cont].letrasMorse[j]; j++){
if(l[cont].letrasMorse[j] == '*'){ /* se encontra um asterisco */
l[cont].letrasMorse[j] = '\0'; /* elimina o asterisco */
break;
}
}
cont++; /* aponta para a proxima posiçao do vetor */
}
}
fclose(arch);
FILE *fp;
char linha[MAX_STRING_SIZE];
fp = fopen("original.txt", "r");
if (arch==NULL){
printf("ERROR");}
while (fgets(linha,MAX_STRING_SIZE,fp) != NULL ) {
codifica(linha);
}
fclose(fp);
return 0;
}
A .-*
B -...*
C -.-.*
D -..*
etc...
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
Debian 13 "trixie&... lançado! (44)
Rust é o "C da nossa geração"? (3)
Gerenciador de arquivos é finalizado ao abrir pasta específica (2)