J'ai une fonction dans mon programme qui est supposé prendre l'entrée du code Morse, le comparer à un tableau de chaînes et retourner une lettre d'une chaîne correspondante une fois qu'il a trouvé le Morse correspondant. J'ai finalement réussi à le faire fonctionner sans s'écraser, mais maintenant il ne cesse de renvoyer les mauvaises lettres. Par exemple ... --- ... devrait revenir sos mais à la place je deviens amb. J'ai essayé de le tester en imprimant le numéro d'index, la chaîne de code morse et la lettre et tout a concordé, donc je pense que le problème est avec la chaîne de comparaison.Chaîne Comparer ne fonctionne pas dans C
Voici le code:
void morsetotext(char mor[])
{
char alpha[]={"abcdefghijklmnopqrstuvwxyz1234567890 "};
char *morse[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---","-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-",".--", "-..-", "-.--", "--.","-----", ".----",
"..---", "...--", "....-",".....", "-....", "--...", "---..", "----." "/ "};
char letter[8];
char convert[250];
int con_count=0;
int let_count=0;
int count=0;
int index=0;
int length=strlen(mor);
while (count<length)
{
for(let_count=0; let_count<8 && mor[count]!=' '; let_count++)
{
letter[let_count]=mor[count];
count++;
}
letter[let_count+1]='\0';
index=0;
while (strcmp (letter, morse[index])!=1)
{
index++;
}
count++;
printf ("%c", alpha[index]);
}
return;
}
Merci pour toute aide.
Edit: Désolé pour ça, voici toute la fonction.
Montrez-nous la déclaration et la définition de 'letter'. On dirait que c'est un 'char', auquel cas votre appel' strcmp' est faux. Avez-vous votre niveau d'alerte relevé? Ignorez-vous les avertissements? –
Oui, le problème est clairement avec string compare ... une fonction que des centaines de milliers de programmeurs ont utilisé des millions de fois sans problème. Lire "La première règle de la programmation": http://www.codinghorror.com/blog/2008/03/the-first-rule-of-programming-its-always-your-fault.html – abelenky
Je voulais dire que je pensais Je pourrais l'utiliser mal. J'apprends encore, et j'espérais que des yeux plus expérimentés m'aideraient à trouver le problème. Merci cependant, pour votre réponse polie. – user1827962