[問題] 找出句子中最長的單字(C++)

作者: MrPanda (不人氣揪團師)   2017-12-10 13:03:18
開發平台(Platform): (Ex: Win10, Linux, ...)
win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string>
問題(Question):
程式碼使用Dev C++輸出結果正常
但是使用VC執行,結果後端會出現一堆亂碼
餵入的資料(Input):
條件
1. 遇到符號'.'為結數字元
2. 以空白鍵當作做為區隔單字識別字元
3. 長度一樣則輸出第一個
輸入測試字串
I am a normal ptt user like everybody.
Hello world.
預期的正確結果(Expected Output):
https://imgur.com/a/lvtaJ
錯誤結果(Wrong Output):
https://imgur.com/a/Po9Ep
https://imgur.com/a/CBkl9
程式碼(Code):(請善用置底文網頁, 記得排版)
https://ideone.com/AZiEjb
補充說明(Supplement):
不曉得是不是因為VC會自動輸出
string str_arr[10] = {};
後面所有沒有被初始化或是指定值的部分?
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.246.104.9
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1512882203.A.BE1.html
※ 編輯: MrPanda (111.246.104.9), 12/10/2017 13:06:22
※ 編輯: MrPanda (111.246.104.9), 12/10/2017 13:07:39
作者: galic (嘎利)   2017-12-10 13:16:00
你可能要先弄清楚C-style string是null-terminatedstr2最後並沒有擺入最重要的'null' character
作者: longlongint (華哥爾)   2017-12-10 13:30:00
為什麼不先跑一下課本範例呢
作者: loveflames (咕啾咕啾魔法陣)   2017-12-12 15:00:00
建議你把cppreference的list initialization看個一輪問題通通迎刃而解
作者: galic (嘎利)   2017-12-12 17:34:00
樓上示範一下如何在讀完你說的參考資料以後 寫出"迎刃而解"的程式碼
作者: loveflames (咕啾咕啾魔法陣)   2017-12-12 17:59:00
str1~str3就少了一個空的{}加上去後會對陣列作聚合初始化,因為{}為空,每個char以{}初始,經值初始化後為0
作者: galic (嘎利)   2017-12-12 18:46:00
正確的初始化的確是好習慣 也能降低程式錯誤的機率 但是這篇的問題是 他的C-style Strings 並沒有包含Null Character而且Null Character可不等於0阿
作者: loveflames (咕啾咕啾魔法陣)   2017-12-12 18:57:00
啊,我一直把'\0'這玩意當成0了
作者: galic (嘎利)   2017-12-12 19:08:00
規格書:null character是個byte且所有的bits都被設成0但是0這個literal 卻不一定是一個byte
作者: loveflames (咕啾咕啾魔法陣)   2017-12-12 19:16:00
我前面講的{}是把char清0,非指literalhttps://ideone.com/wWTBP9code幾乎一樣,只改四行
作者: galic (嘎利)   2017-12-12 20:34:00
還是錯啊
作者: loveflames (咕啾咕啾魔法陣)   2017-12-12 21:11:00
已經跑完確認過了,改那四行就沒有問題str2一開始的0初始化就會把null charatcer填進去是500個byte全部被清0,到底錯在哪str2按程式邏輯不會全部被str1填值,至少str2[499]會是null character
作者: galic (嘎利)   2017-12-12 22:21:00
錯在邊吃火鍋邊看程式碼 沒看到32行 XD這樣寫還不太好啦 下次還是可能會遇到類似問題我想表達的是 你不該為了一個null character 不斷的去把整個buf寫0 至少效能上也有疑慮
作者: loveflames (咕啾咕啾魔法陣)   2017-12-12 22:45:00
我只是挑出有bug的地方,沒有要改他架構

Links booklink

Contact Us: admin [ a t ] ucptt.com