数组元素的数字索引

问题描述 投票:0回答:2

任务

将号码转换为汉语拼音。减号等于“fu”。

键值对

# 数字:拼音

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu

代码

#include <stdio.h>

int main() {
    char ipt[100];
    char py[10][6] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};

    fgets(ipt, 100, stdin);

    int i = 0;
    if (ipt[0] == '-') {
        printf("%s ", "fu");
        i++;
    }

    for (i; i < strlen(ipt); i++) {
        if (i < strlen(ipt) - 1)
            printf("%s ", py[ipt[i] - '0']);
        else
            printf("%s", py[ipt[i] - '0']);
    }
    return 0;
}

测试案例

我输入600,输出是“liu ling ling”。我测试了其他一些数字,看起来都不错,但检查网站说我错了。

arrays c string
2个回答
0
投票

函数

fgets
可以在对应的字符数组有空格的情况下将换行符
'\n'
追加到输入的字符串中。

您应该将其删除,例如

ipt[ strcspn( ipt, "\n" ) ] = '\0';

否则,您的代码还会输出换行符的字符串。


0
投票

你忽略了

fgets()
的返回值:

fgets(ipt, 100, stdin);

fgets()
返回空指针以指示失败。此外,
fgets()
在输入中包含换行符(如果可能)。剥离它的最简单的解决方案是:

ipt[strcspn(ipt, "\n")] = 0;
© www.soinside.com 2019 - 2024. All rights reserved.