次のようなさまざまな方法で書かれた一連の電話番号を変換しようとしています。
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