我想将一个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;
}
答案 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;
}
}
}