gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:53:59 24 4
gpt4 key购买 nike

所以我需要能够像这样输入一个字符串作为电话号码:(555)-444-3333。之后我需要使用 strtok 删除括号和破折号,并将字符串区号和电话号码的其余部分转换为整数并将它们一起打印出来我的问题是使用 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( phone, "(" );
area_code = strtok( phone, ")" );

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

在任何情况下,覆盖您正在解析的字符串都是不好的风格。如果您使用 strtol,一次调用就会为您提供一组数字的数值和跟在数字后面的指针,您可以从中开始处理下一组数字。

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


尽管有 5/6 个字符相同,strtok 不是 str-to-x 功能系列。 strtol 返回一个长整数,strtod 返回一个 double 值。

关于c - 试图在 c 中使用 strtok 摆脱一个角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47360052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com