convertit une chaîne de char c
Je suis en train de travailler sur un projet où je peux convertir une api chiffres à un char. J'ai utilisé un tableau de pointeurs de chaîne pour obtenir la conversion. Cependant, je veux retourner un seul ch, comme mon api que je suis à l'aide de n'accepter qu'un char. Donc ap_five sera de retour "5". Mais je tiens à cinq pour être un seul char '5'.
J'ai pensé que je pourrais peut-être lancer pour un char dans le retour. Cependant, je viens d'obtenir des ordures.
Je suis sûr qu'il ya d'autres façons de résoudre ce problème, comment je me demandais simplement comment puis-je résoudre mon programme actuel.
char *digits_conversion[][2]=
{
{"ap_zero", "0"},
{"ap_one", "1"},
{"ap_two", "2"},
{"ap_three", "3"},
{"ap_four", "4"},
{"ap_five", "5"},
{"ap_six", "6"},
{"ap_seven", "7"},
{"ap_eight", "8"},
{"ap_nine", "9"},
{"ap_star", "*"},
{"ap_hash", "#"},
{NULL, NULL}
};
char convert_to_char(const char *digit)
{
int i = 0;
for(i = 0; *digits_conversion[i][1]; i++)
{
if(strcmp(digits_conversion[i][0], digit) == 0)
{
return (char) digits_conversion[i][1];
}
}
return 'char *digits_conversion[][2]=
{
{"ap_zero", "0"},
{"ap_one", "1"},
{"ap_two", "2"},
{"ap_three", "3"},
{"ap_four", "4"},
{"ap_five", "5"},
{"ap_six", "6"},
{"ap_seven", "7"},
{"ap_eight", "8"},
{"ap_nine", "9"},
{"ap_star", "*"},
{"ap_hash", "#"},
{NULL, NULL}
};
char convert_to_char(const char *digit)
{
int i = 0;
for(i = 0; *digits_conversion[i][1]; i++)
{
if(strcmp(digits_conversion[i][0], digit) == 0)
{
return (char) digits_conversion[i][1];
}
}
return '\0';
}
int main(void)
{
char ch;
ch = convert_to_char("ap_five");
printf("Converted digit: %c\n", ch);
return 0;
}
';
}
int main(void)
{
char ch;
ch = convert_to_char("ap_five");
printf("Converted digit: %c\n", ch);
return 0;
}
Vous devez vous connecter pour publier un commentaire.
La solution la plus simple pour votre code existant est juste pour changer:
en
Cependant, vous pourriez trouver que le changement de
digits_conversion
dans un tableau de structures qui vont vous donner le code qui est plus facile à comprendre et à maintenir. Par exemple:est un C-chaîne de style. Utilisation:
La résiliation de votre contrat "pour" boucle semble incorrect:
Le "NULL" vous avez à la fin de votre tableau est littéralement, la chaîne de la valeur "NULL". Si vous passez une chaîne qui ne correspond à aucune des "ap_zero" par "ap_hash" votre programme sera probablement un accident en tant que la boucle commence déréférencement des ordures delà de la fin de votre tableau.
Eric fixe dans son exemple, mais je pensais que je voudrais souligner en particulier.