Я пытаюсь написать простую программу, которая принимает строковые данные и затем преобразует их в азбуку Морзе.
Когда я компилирую код и запускаю его, я не получаю ошибок, но иногда он дает вывод, иногда нет, иногда дает только половину его.Я могу отчасти понять, что алгоритм, который я использую сейчас, может быть немного медленным для преобразования большой строки, но он выполняет те же функции даже для одного символа.
Так что не так с моим кодом?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
char characters[26]= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
char *morse[26] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--"," -.","---",".--.","--.-",".-."," ...","-","..-","...-",".--","-..-","-.--","--.."};
char input[25];
char *output[25];
gets(input);
int i = 0, k = 0; //Make all of the chars uppercase to compare with the array.
while(i < 25) {
input[i] = toupper(input[i]);
while(input[i] != characters[k]){
k++;
}
output[i] = morse[k]; //Assign the according morse code to the output's pointers.
i++;
}
int n = 0;
while(n < 25){
if (output[n] != NULL){ //Print out everything except empty parts
printf("%s", output[n]);
n++;
}
else{
break;
}
}
return EXIT_SUCCESS;
}