作者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/cn.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