簡體   English   中英

試圖在c中使用strtok擺脫字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM