討論區快速選單
知識庫快速選單
政府補助!資策會APP就業班 程式設計俱樂部Facebook粉絲團 虛擬社群公民行為研究
[ 回上頁 ] [ 討論區發言規則 ]
以逗點分割字串
更改我的閱讀文章字型大小
作者 : imkangta(IMKANGTA)
[ 貼文 21 | 人氣 8670 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/1/13 上午 09:37:37
想請問如何以逗點分隔字串


我現在是以

sscanf(tmp,"%[^','],%[^','],%[^','],%[^\r]",stmp1,stmp2,stmp3,stmp4);

來將tmp存到個別的子字串

在 tmp = "1,2,3,4" 情形下 是OK的

stmp1 = "1" stmp2 = "2" stmp3 = "3" stmp4 = "4"

但是當字串裡有兩個逗點相連時就會有問題

例 tmp = "1,,4" 的時候

stmp1 = "1" stmp2 = "" stmp3 = "" stmp4 = ""
     ^^^^^^^^^^^
     抓不到值

請問該如何用逗點去切割字串
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++曠世奇才新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4725 | 人氣 9172 | 評價 31140 | 評價/貼文 6.59 | 送出評價 138 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/1/13 下午 09:10:51
>sscanf(tmp,"%[^','],%[^','],%[^','],%[^\r]",stmp1,stmp2,stmp3,stmp4);

上面的至少有兩個錯誤:

1. %[^] 格式堛漕C一個字元都是 scanf() 搜尋的對象. %[^','] 的字元集是 { single-quote, comma, single-quote }. 如果你要以逗號來做分割符號, 格式是 "%[^,]".

2. 在 text mode , newline 是 \n, 不管什麼系統都是這樣. 所以最後一個的格式是 %[^\n]. 在一般的情況下, %[^\n] 是可以不需要的, 因為預設就是以 \n 來做輸入的結束.


>但是當字串裡有兩個逗點相連時就會有問題
>
>例 tmp = "1,,4" 的時候

應該是: "1,,,4" 才對.


>stmp1 = "1" stmp2 = "" stmp3 = "" stmp4 = ""
> ^^^^^^^^^^^
> 抓不到值
>
>請問該如何用逗點去切割字串

據我了解, scanf() 不能讀 empty field. 檢查 [s]scanf() 的回傳值就知道了.

這個情況最好的方法就是讀整行字串, 然後自己 parse.

作者 : imkangta(IMKANGTA)
[ 貼文 21 | 人氣 8670 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/1/18 下午 07:10:56
感謝 我現在是以自己去parse字串解決了
 板主 : simula
 > C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
C++
1 Raymond 12600 
2 simula 4690 
3 青衫 4670 
4 coco 3900 
5 白老鼠(Gary) 3610 
6 Ben 2250 
7 ozzy 1980 
8 Anderson 1960 
9 windblown 1650 
10 Kenny 1540 
C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.15625