作者ed52120 (羊咩)
看板C_and_CPP
標題[問題] C的字串切割 strtok
時間Sun Jun 21 17:27:19 2009
會問到這個 當時是在想一題"網域名稱反轉"
簡略講一下:就是一般的網址列 如www.yahoo.com.tw
經過轉換後變成由右到左的tw com yahoo www
所以就想到切割字串
不過strtok的原理有點看不懂
本來想說讀入字串後 經由dot切割 然後反向輸出
但是看了網路上的資料 反而看不懂它的原理了
以下是寫出來的:
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
int main(void)
{
int i=0;
FILE *fptr;
fptr = fopen("test.txt","r");
char str[100];
char *temp,*gg;
char com[100][100];
while(fgets(str,100,fptr)!= NULL)
{
temp=str;
gg=strtok(temp,".");
while(gg!=NULL)
{
strcpy(com[i],gg);
i++;
gg=strtok(NULL,".");
}
}
for(int j=i-1;j>=0;j--)
printf("%s",com[j]);
printf("\n");
system("pause");
return 0;
}
gg=strtok(temp,"."); 跟 gg=strtok(NULL,"."); 不是很了解< 網路上的寫法 >
compile之後會出錯 我覺得是strtok那邊有問題
不知道有沒有人可以幫忙解惑
說明一下 strtok(temp,".") 跟 NULL 兩者功用分別是做什麼
temp經過依據dot切割後會變成怎樣
還是面對輸入反轉字串有更好的解法 都可以跟我指點一下
我還不是很熟 盼請高手幫助囉
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.5.187
1F:推 legnaleurc:不是很熟的話至少看一下strtok的說明書吧 06/21 17:40
2F:推 bobhsiao:要注意,strtok()內有一個static變數,不曉得大家知不知 06/21 17:46