[問題] C的字串切割 strtok

看板C_and_CPP (C/C++)作者 (羊咩)時間16年前 (2009/06/21 17:27), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/2 (看更多)
會問到這個 當時是在想一題"網域名稱反轉" 簡略講一下:就是一般的網址列 如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

06/21 17:40, , 1F
不是很熟的話至少看一下strtok的說明書吧
06/21 17:40, 1F

06/21 17:46, , 2F
要注意,strtok()內有一個static變數,不曉得大家知不知
06/21 17:46, 2F
文章代碼(AID): #1AFVpu5O (C_and_CPP)
文章代碼(AID): #1AFVpu5O (C_and_CPP)