C语言,请问怎么读入电话号码

请问这里读入多组号码应该用什么输入?
Description
吉祥物cjc最近在背单词,但是他的英语是在太差了。连用英语读电话号码都不会,于是他希望你能帮他。

Input
先输入一个T,有T组测试数据。
每组测试数据有一串号码,号码(长度0< len < 20)有两种形式①手机号码,eg:13500000000②区号 家庭电话号码(区号和号码之间用一个空格隔开),eg:0577 62222222

Output
比如说 :0->zero;1->one;2->two;3->three…..

Samples
input
2
12345678900
0577 67890987
output
one two three four five six seven eight nine zero zero
zero five seven seven six seven eight nine zero nine eight seven

  • 先看效果图

img

  • 代码参考如下:
#include<stdio.h>
#include<string.h>

char a[10][6] = {"zero","one","two","three","four","five","six","seven","eight","nine"};

// 将一个号码 转换成对应的英文
char* convert(char* origin) {

    char p[150] = {""};
    int i = 0;
    char temp;

    while ((temp = *(origin + i)) != '\0')
    {
        if (temp >= '0' && temp <= '9')
        {
            strcat(p, a[temp - '0']);
            strcat(p, " ");
        }
        i++;
    }

    char *ch = p;

    return ch;
}

int main()
{
    int n, i;
    scanf("%d",&n);
    char g[n][20];
    char s[n][150];
    getchar();
    for(i=0;i<n;i++)
    {
        gets(g[i]);
        strcpy(s[i], convert(g[i]));
    }
    
    for (i=0;i<n;i++) 
    {
        printf("%s\n", s[i]);
    }

    return 0;
}

逐字符读入比较好。
示例代码:


#include<stdio.h>

const char *str[]={
    "zero",
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine"
};

int main(){
    int T;
    char c;
    scanf("%d\n",&T);
    while(T>0){
        c=getchar();
        if(c>='0'&&c<='9'){
            printf("%s ",str[c-'0']);
        }else if(c=='\n'){
            putchar(c);
            T--;
        }
    }
    return 0;
}

运行结果:

img