[問題] 字串1分為2

作者: blueguan   2017-09-05 19:52:48
開發平台(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
想請問大家是否有很棒的作法...
感謝大家
作者: johnjohnlin (嗯?)   2017-09-05 20:03:00
while (*s != ' ') s++; *s = '\n';
作者: Caesar08 (Caesar)   2017-09-05 20:06:00
先貼code出來。這功能有好幾種方法可以做
作者: moebear (萌熊)   2017-09-05 20:13:00
一樓的滿不錯的
作者: blueguan   2017-09-05 20:29:00
可是作法1只會讀出This...哪 is a book 還是另外抓.我不是要切成 This, is, a, book 四個Word是要分成而是兩個字串
作者: stucode   2017-09-05 20:44:00
? 作法1是指一樓嗎? 我覺得你好像誤會了什麼
作者: Hazukashiine (私は幸せです)   2017-09-05 20:44:00
while 遇到第一個空格會退出回圈
作者: stucode   2017-09-05 20:45:00
另外你說不想一個一個char處理是想找現成函數嗎?
作者: eye5002003 (下一夜)   2017-09-05 22:00:00
想不出比一樓更好的做法了一樓找出空白字元的位置之後就可以用std::string切割
作者: Hazukashiine (私は幸せです)   2017-09-05 23:45:00
這個問題很明顯是一個線性複雜度的問題要怎麼不一個一個比對完成這個任務(?
作者: CoNsTaR ((const *))   2017-09-05 23:59:00
用 magic numbers?XDD
作者: hunandy14 (Charlott.HonG)   2017-09-06 00:10:00
strtok_s(str, " ,", &p);然後在印出 str 和 p
作者: steve1012 (steve)   2017-09-06 00:37:00
把他包成一個函數 就可以假裝很簡潔啦
作者: bravc29229 (neil)   2017-09-06 01:39:00
抱歉C不熟Java的話是這樣做String[] newString = stri上面斷掉.. string.split(" ", 2); 即可
作者: PkmX (阿貓)   2017-09-06 02:20:00
可以#include<水晶球>啊 char* s2 = s + oracle();
作者: adrianshum (Alien)   2017-09-06 13:32:00
Char array 的話就把第一個space 換成NULL, 第二個string 就是由NULL 後一個位開始
作者: firejox (Tangent)   2017-09-06 13:44:00
sscanf
作者: moebear (萌熊)   2017-09-06 17:17:00
樓上這好像也很好
作者: s4300026 (s4300026)   2017-09-06 18:04:00
我記得c-style的字串是可以以/0為結尾,用一樓的做法,把空白取代成/0,然後新創一個指標只到/0後面的字串呢?啊,我說就是樓樓上的方法
作者: uranusjr (←這人是超級笨蛋)   2017-09-06 21:00:00
while (*s != '') s++; *s = '\0'; char *s2 = s + 1;其實就是上面講的方法啦, 先決條件是 s 是 char *
作者: HolyBugTw (HolyBug)   2017-09-08 12:02:00
1)*str1指向&str 2)*str2指向&str[5] 3)把str[4]變\0

Links booklink

Contact Us: admin [ a t ] ucptt.com