对现有代码的最简单修复只是改变:
return (char) digits_conversion[i][1];
成
return digits_conversion[i][1][0];
但是,您可能会发现更改digits_conversion
为结构数组将为您提供更易于理解和维护的代码.例如:
struct digit_mapping { char *api_name; char digit; }; struct digit_mapping conversion_table[] = { { "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, '\0'} }; char convert_to_char(const char *digit) { int i = 0; for(i = 0; conversion_table[i].digit; i++) { if(strcmp(conversion_table[i].api_name, digit) == 0) { return conversion_table[i].digit; } } return '\0'; } int main(void) { char ch; ch = convert_to_char("ap_five"); printf("Converted digit: %c\n", ch); return 0; }