[英]trying to get rid of a character using strtok in c
因此,我需要能夠輸入一個字符串作為電話號碼,例如:(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
返回一個雙strtod
。
在strtok
調用中,將分隔符指定為"()-"
。
祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.