我正在尝试转换以各种方式编写的一系列电话号码,例如:
324.323 4345
234-345-6456.
我想将它们转换成的格式是:(xxx) xxx-xxxx
这是我到目前为止的代码,不幸的是它不起作用..
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
FILE *fp;
char str[31], ch;
int i = 0, p1, p2, p3;
fp = fopen("numbers.txt", "r");
while((ch = getc(fp)) != '\n')
{
if(isdigit(ch))
str[i++] = ch;
str[i] = '\0';
i = 0;
sscanf(str, "%3d%3d%4d", &p1, &p2, &p3);
printf("(%3d) %3d-%4d\n", p1, p2, p3);
}
fclose(fp);
return 0;
}
我在这里做错了什么?我知道我可能需要隔离每个整数,但这样做有问题。
只需使用以下命令运行它:
404.817.6900
(215) 686-1776
312-746-6000
877 275 5273
6173434200
并得到以下信息:
( 4) 4196261-32767
( 0) 4196261-32767
( 4) 4196261-32767
( 4) 4196261-32767
( 8) 4196261-32767
( 1) 4196261-32767
( 7) 4196261-32767
( 7) 4196261-32767
( 6) 4196261-32767
( 9) 4196261-32767
( 0) 4196261-32767
( 0) 4196261-32767
( 0) 4196261-32767