试图在 c 中使用 strtok 摆脱一个角色

trying to get rid of a character using strtok in c

所以我需要能够像这样输入一个字符串作为 phone 数字: (555)-444-3333。 之后我需要使用 strtok 删除括号和破折号,并将字符串区域代码和 phone 数字的其余部分转换为整数并将它们一起打印出来 我的问题是使用 strtok 摆脱 ( ,因为如果我不这样做,区号在转换为 int 时只会打印 0。这就是我所拥有的:

int main()
{
phone[14];
int* area_code;
int* digits;
int* i, j;

printf("Enter a phone number: ");
scanf("%s", phone);

strtok( phone, "(" );
area_code = strtok( phone, ")" );
j = atoi(area_code);

printf("%d", j);

while((digits = strtok(NULL, "-")) != NULL )
{
i = atoi(digits);
printf("%d", digits);
}

return 0;
}

在您的 strtok 调用中,将分隔符指定为 "()-"

祝你好运。

问题就在这里:

strtok( phone, "(" );
area_code = strtok( phone, ")" );

因为第二次调用传递了一个非 NULL 指针,所以它不会继续处理第一个字符串,而是从传递的指针开始,现在是长度为零的字符串。

无论如何,覆盖您正在解析的字符串是不好的做法。如果您使用 strtol,一次调用会给您一组数字的数值和跟在数字后面的指针,您可以从中开始处理下一组数字。

但是,如果您只是要将数字打印出来,则根本不需要进行数字转换。只需删除所有标点符号。


尽管有 5/6 个字符相同,但 strtok 不是 str-to-x 函数族的一部分. strtol 返回长整型,strtod 返回双精度。