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...
Deixando o Gnome bonitão em qualquer distribuição
Como ativar o módulo de cancelamento de ruído no Pipewire
Como escolher o melhor escalonador de CPU para melhorar o desempenho da máquina
Curiosidade sobre DOOM Guy e Isabelle de Animal Crossing
Inicializando servidor Ubuntu na AWS e rodando apache em Container
Como centralizar o widget Gerenciador de Tarefas Apenas Com Ícones do Painel do KDE
Checar seu IP externo no terminal
Como fazer um pendrive butável dar boot no VirtualBox
GRUB do Debian 12 não detecta segundo Linux instalado em partição BTRF... (31)