看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1504612370.A.A65.html
johnjohnlin: while (*s != ' ') s++; *s = '\n'; 09/05 20:03
Caesar08: 先貼code出來。這功能有好幾種方法可以做 09/05 20:06
moebear: 一樓的滿不錯的 09/05 20:13
blueguan: 可是作法1只會讀出This...哪 is a book 還是另外抓. 09/05 20:29
blueguan: 我不是要切成 This, is, a, book 四個Word是要分成 09/05 20:30
blueguan: 而是兩個字串 09/05 20:30
※ 編輯: blueguan (223.136.42.35), 09/05/2017 20:31:33
stucode: ? 作法1是指一樓嗎? 我覺得你好像誤會了什麼 09/05 20:44
Hazukashiine: while 遇到第一個空格會退出回圈 09/05 20:44
stucode: 另外你說不想一個一個char處理是想找現成函數嗎? 09/05 20:45
eye5002003: 想不出比一樓更好的做法了 09/05 22:00
eye5002003: 一樓找出空白字元的位置之後就可以用std::string切割 09/05 22:02
Hazukashiine: 這個問題很明顯是一個線性複雜度的問題 09/05 23:45
Hazukashiine: 要怎麼不一個一個比對完成這個任務(? 09/05 23:46
CoNsTaR: 用 magic numbers? 09/05 23:59
CoNsTaR: XDD 09/05 23:59
hunandy14: strtok_s(str, " ,", &p); 09/06 00:10
hunandy14: 然後在印出 str 和 p 09/06 00:18
steve1012: 把他包成一個函數 就可以假裝很簡潔啦 09/06 00:37
bravc29229: 抱歉C不熟Java的話是這樣做String[] newString = stri 09/06 01:39
bravc29229: 上面斷掉.. string.split(" ", 2); 即可 09/06 01:40
PkmX: 可以#include<水晶球>啊 char* s2 = s + oracle(); 09/06 02:20
adrianshum: Char array 的話就把第一個space 換成NULL, 第二個str 09/06 13:32
adrianshum: ing 就是由NULL 後一個位開始 09/06 13:32
firejox: sscanf 09/06 13:44
moebear: 樓上這好像也很好 09/06 17:17
s4300026: 我記得c-style的字串是可以以/0為結尾,用一樓的做法, 09/06 18:04
s4300026: 把空白取代成/0,然後新創一個指標只到/0後面的字串呢? 09/06 18:04
s4300026: 啊,我說就是樓樓上的方法 09/06 18:06
uranusjr: while (*s != '') s++; *s = '\0'; char *s2 = s + 1; 09/06 21:00
uranusjr: 其實就是上面講的方法啦, 先決條件是 s 是 char * 09/06 21:00
HolyBugTw: 1)*str1指向&str 2)*str2指向&str[5] 3)把str[4]變\0 09/08 12:02