作者AGanPTT (阿干)
看板C_and_CPP
標題[問題] 關於strtok跟sccanf
時間Mon Jun 22 18:11:02 2009
看的很多文
但還是不懂到底該怎麼用ˊˋ
第一次使用這東西
我是這麼寫
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
1F:推 ianfang:while(sscanf( m, "%d %d %d", &a, &b, &c )) 06/22 18:31
2F:→ ianfang:{ printf( "%d %d %d", a, b, c ); } 我真看不出來你程式 06/22 18:32
3F:→ ianfang:跟你想做的問題有什麼關係... 06/22 18:33
4F:推 ianfang:好像有點錯~先不要用 06/22 18:36
6F:推 ianfang:整個被搞混了...首先strtok只要第一次傳給他字串~所以不能 06/22 18:42
7F:→ ianfang:寫在while裡~sscanf是多餘的~如果你是要字串切割~你多做這 06/22 18:44
8F:→ ianfang:動作要幹嘛 06/22 18:44
9F:推 zlw:老實說,原PO光說不懂,到底哪裡不懂也看不出來,要怎麼回你 06/22 18:45
10F:推 world9918:你要一次抓三組那不能用" "當切割條件 06/22 19:17
11F:→ world9918:不然一次只切到一個數字 06/22 19:17
12F:→ AGanPTT:不懂要怎麼切= = 才能一次把三個數字切掉 06/22 19:28
13F:→ AGanPTT:應該說連strtok怎麼用都不會 06/22 19:29
14F:推 zlw:此例,strtok找到" "後,將" "更改為\0。並傳回以這個\0當結尾 06/22 19:40
15F:→ zlw:的 C-Style 字串開頭所在的char * 06/22 19:41
16F:→ zlw:第一次用m當參數1時,由m[0]開始往右搜尋,之後就從前一次 06/22 19:42
17F:→ zlw:return的指標,所指的地方去往右搜尋 06/22 19:42
18F:→ zlw:打錯,之後的搜尋應該是前一次取代成\0的地方去搜尋 06/22 19:43
19F:→ zlw:的後面地方 06/22 19:43