如何将10位数的电话号码拆分成数字组?

时间:2013-07-29 09:15:36

标签: c split

我想将一个10位数的电话号码(例如:1112223333)转换为3组:

第1组将是:111

第2组:222

和第3组:3333

然后我想加入小组来创建一个字符串,如:(111)-222-3333

我经常搜索但是只发现如何拆分10来获取每个数字或如何使用我没有的分隔符进行拆分。

您能告诉我如何将电话号码分成几部分吗?

编辑: 我有这样的感觉:

void convert_phone(char *phone) {
    if (strlen(phone) != 10) return 0;
    int num;
    int i = strlen(phone) - 1;
    int array[strlen(phone)];
    while (num > 0) {
        array[i--] = num % 10;
        num /= 10;
        printf("%d\n", num);
    }
    return 1;
}

4 个答案:

答案 0 :(得分:1)

#include <stdio.h>
#include <string.h>

int convert_phone(char *outbuff, const char *phone){
    if (strlen(phone) != 10) return 0;

    char gp1[3+1] = {0};
    char gp2[3+1] = {0};
    char gp3[4+1] = {0};
    strncpy(gp1, phone, 3);
    strncpy(gp2, phone + 3, 3);
    strncpy(gp3, phone + 6, 4);
    sprintf(outbuff, "(%s)-%s-%s", gp1, gp2, gp3);

    return 1;
}
int main(void){
    const char *phone_num = "1112223333";
    char buff[sizeof("(XXX)-XXX-XXXX")];
    if(convert_phone(buff, phone_num))
        printf("%s\n", buff);//(111)-222-3333
    return 0;
}

答案 1 :(得分:1)

如果你有10位数的输入数字作为字符串,并且你想要字符串中的组,那么你可以使用sscanf函数:

sscanf(str, "%3s%3s%4s", grp1, grp2, grp3);

最后使用sprintf

组合成所需的字符串
sprintf(result, "(%s)-%s-%s", grp1, grp2, grp3)

答案 2 :(得分:0)

创建一个字符串,添加左括号,将三个第一个数字添加到字符串中,添加右括号,在字符串中添加一个破折号,获取接下来的三个数字并将它们添加到字符串中,添加第二个破折号,最后将最后四位数字添加到字符串中。

答案 3 :(得分:0)

#include<stdio.h>
int main()
{
    char *number = "9703654329";
    char *k = number;
    int i=0,c=0,s=0,b=0,a=0;
    printf("(");
    for(i=strlen(number);i;i--)
    {
        printf("%c",*k);
        k = (char *)k + sizeof(char);
        c++;
        if(c==3 && s!=2)
        {
            a+=1;
            if(a==1)
            {
                printf(")");
            }
            printf("-");
            c=0;
            s+=1;
        }
    }
}