1

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

第 1 组将是:111

第 2 组:222

第三组: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

4 回答 4

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;
}
于 2013-07-29T09:38:28.703 回答
1

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

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

最后使用以下组合成所需的字符串sprintf

sprintf(result, "(%s)-%s-%s", grp1, grp2, grp3)
于 2013-07-29T09:41:15.930 回答
0

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

于 2013-07-29T09:18:03.913 回答
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;
        }
    }
}
于 2013-07-29T10:02:31.817 回答