[问题] 找出句子中最长的单字(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