试图在 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
返回双精度。
所以我需要能够像这样输入一个字符串作为 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
返回双精度。