我试图弄清楚为什么当我手动输入字符串长度(例如(int)18)并给它输入的18长度字符串的相同数据时,当strlen在计算时与(int)strlen(variable [1])不同在变量 [1] 上产生 18。我希望由于 strlen 函数的结果是 18,因此两者会产生相同的结果,但由于某种原因,strlen 会丢弃垃圾数据,例如 ョœ 或其他随机字符。为了解决这个问题 (int)strlen(variable[1])+1 有效,但我仍然不明白当这两个函数导致 int 值 18 时它们会产生不同的结果。
编辑:尝试简化我的问题,如何
iResult = send( ConnectSocket, argv[2], (int)strlen(argv[2]), 0 );
与......不同
iResult = send( ConnectSocket, argv[2], (int)5, 0 );
当 argv[2] 为“12345”时?我希望得到相同的结果,但我错了,我想知道如何/为什么。
EDIT2:没关系,我一定做了一些愚蠢的事情,比如在没有意外重新编译的情况下测试程序,因为现在一切都按照我期望的方式工作......