[問題] 關於strtok跟sccanf

看板C_and_CPP (C/C++)作者 (阿干)時間16年前 (2009/06/22 18:11), 編輯推噓7(7012)
留言19則, 4人參與, 最新討論串1/2 (看更多)
看的很多文 但還是不懂到底該怎麼用ˊˋ 第一次使用這東西 我是這麼寫 char m[ 3000 ] = "3 3 3 4 5 6 2 4 7"; char *token; while ( token != NULL ) { sscanf( m, "%d %d %d", &a, &b, &c ); token = strtok( m, " " ); token = strtok( NULL, " " ); printf( "%d %d %d", a, b, c ); } 我是想要讓字串內的數字三個三個一組讀出來 但怎麼讀都失敗 請教一下板上高手 這該怎麼用 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.104.117

06/22 18:31, , 1F
while(sscanf( m, "%d %d %d", &a, &b, &c ))
06/22 18:31, 1F

06/22 18:32, , 2F
{ printf( "%d %d %d", a, b, c ); } 我真看不出來你程式
06/22 18:32, 2F

06/22 18:33, , 3F
跟你想做的問題有什麼關係...
06/22 18:33, 3F

06/22 18:36, , 4F
好像有點錯~先不要用
06/22 18:36, 4F

06/22 18:41, , 5F

06/22 18:42, , 6F
整個被搞混了...首先strtok只要第一次傳給他字串~所以不能
06/22 18:42, 6F

06/22 18:44, , 7F
寫在while裡~sscanf是多餘的~如果你是要字串切割~你多做這
06/22 18:44, 7F

06/22 18:44, , 8F
動作要幹嘛
06/22 18:44, 8F

06/22 18:45, , 9F
老實說,原PO光說不懂,到底哪裡不懂也看不出來,要怎麼回你
06/22 18:45, 9F

06/22 19:17, , 10F
你要一次抓三組那不能用" "當切割條件
06/22 19:17, 10F

06/22 19:17, , 11F
不然一次只切到一個數字
06/22 19:17, 11F

06/22 19:28, , 12F
不懂要怎麼切= = 才能一次把三個數字切掉
06/22 19:28, 12F

06/22 19:29, , 13F
應該說連strtok怎麼用都不會
06/22 19:29, 13F

06/22 19:40, , 14F
此例,strtok找到" "後,將" "更改為\0。並傳回以這個\0當結尾
06/22 19:40, 14F

06/22 19:41, , 15F
的 C-Style 字串開頭所在的char *
06/22 19:41, 15F

06/22 19:42, , 16F
第一次用m當參數1時,由m[0]開始往右搜尋,之後就從前一次
06/22 19:42, 16F

06/22 19:42, , 17F
return的指標,所指的地方去往右搜尋
06/22 19:42, 17F

06/22 19:43, , 18F
打錯,之後的搜尋應該是前一次取代成\0的地方去搜尋
06/22 19:43, 18F

06/22 19:43, , 19F
的後面地方
06/22 19:43, 19F
文章代碼(AID): #1AFrYtBr (C_and_CPP)
文章代碼(AID): #1AFrYtBr (C_and_CPP)