作者blueguan ()
看板C_and_CPP
標題[問題] 字串1分為2
時間Tue Sep 5 19:52:48 2017
開發平台(Platform): (Ex: Win10, Linux, ...)
LINUX
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
問題(Question):
用第一個空格為分隔點,將一段含有空格的字串1分為2
餵入的資料(Input):
This is a book.
預期的正確結果(Expected Output):
This
is a book
目標是能簡化,不想要1個1個char來做copy
想請問大家是否有很棒的作法...
感謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.42.35
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1504612370.A.A65.html
1F:→ johnjohnlin: while (*s != ' ') s++; *s = '\n'; 09/05 20:03
2F:→ Caesar08: 先貼code出來。這功能有好幾種方法可以做 09/05 20:06
3F:→ moebear: 一樓的滿不錯的 09/05 20:13
4F:→ blueguan: 可是作法1只會讀出This...哪 is a book 還是另外抓. 09/05 20:29
5F:→ blueguan: 我不是要切成 This, is, a, book 四個Word是要分成 09/05 20:30
6F:→ blueguan: 而是兩個字串 09/05 20:30
※ 編輯: blueguan (223.136.42.35), 09/05/2017 20:31:33
7F:→ stucode: ? 作法1是指一樓嗎? 我覺得你好像誤會了什麼 09/05 20:44
8F:推 Hazukashiine: while 遇到第一個空格會退出回圈 09/05 20:44
9F:→ stucode: 另外你說不想一個一個char處理是想找現成函數嗎? 09/05 20:45
10F:推 eye5002003: 想不出比一樓更好的做法了 09/05 22:00
11F:推 eye5002003: 一樓找出空白字元的位置之後就可以用std::string切割 09/05 22:02
12F:推 Hazukashiine: 這個問題很明顯是一個線性複雜度的問題 09/05 23:45
13F:→ Hazukashiine: 要怎麼不一個一個比對完成這個任務(? 09/05 23:46
14F:推 CoNsTaR: 用 magic numbers? 09/05 23:59
15F:→ CoNsTaR: XDD 09/05 23:59
16F:→ hunandy14: strtok_s(str, " ,", &p); 09/06 00:10
17F:→ hunandy14: 然後在印出 str 和 p 09/06 00:18
18F:推 steve1012: 把他包成一個函數 就可以假裝很簡潔啦 09/06 00:37
19F:推 bravc29229: 抱歉C不熟Java的話是這樣做String[] newString = stri 09/06 01:39
20F:→ bravc29229: 上面斷掉.. string.split(" ", 2); 即可 09/06 01:40
21F:→ PkmX: 可以#include<水晶球>啊 char* s2 = s + oracle(); 09/06 02:20
22F:推 adrianshum: Char array 的話就把第一個space 換成NULL, 第二個str 09/06 13:32
23F:→ adrianshum: ing 就是由NULL 後一個位開始 09/06 13:32
24F:推 firejox: sscanf 09/06 13:44
25F:→ moebear: 樓上這好像也很好 09/06 17:17
26F:推 s4300026: 我記得c-style的字串是可以以/0為結尾,用一樓的做法, 09/06 18:04
27F:→ s4300026: 把空白取代成/0,然後新創一個指標只到/0後面的字串呢? 09/06 18:04
28F:推 s4300026: 啊,我說就是樓樓上的方法 09/06 18:06
29F:→ uranusjr: while (*s != '') s++; *s = '\0'; char *s2 = s + 1; 09/06 21:00
30F:→ uranusjr: 其實就是上面講的方法啦, 先決條件是 s 是 char * 09/06 21:00
31F:→ HolyBugTw: 1)*str1指向&str 2)*str2指向&str[5] 3)把str[4]變\0 09/08 12:02