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...
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Reinstalei o Debian 12 e a particao /home foi formatada: recuperando s... (7)
Debian Bookworm para a versão beta Debian 13 Trixie (6)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba