【发布时间】:2018-09-19 23:36:22
【问题描述】:
我之前已经让它工作了,但是当我实现功能时,我的字符给了我很多问题。我还检查了 strlen 是否显示了正确的数字,但它显示了一些奇怪的东西。如果我输入一个 10 个字符长的字符,它会给我 73(它上升到 7 然后重新开始计数,所以 14 个字符将是 77)。第一个 strncpy 有效,但另一个不显示任何内容。
【问题讨论】:
-
你没有为“userInput”分配空间...
-
strncpynot NUL 终止副本。无论您听到什么,它几乎都不是您想要的。但是,strncmp对于比较子字符串和目标很有用。 -
您应该查看“strncpy”的手册页......在某些情况下,它不会终止目标字符串。
-
另外,您还没有完全验证用户输入的格式...例如,如果他们输入: Palin(1 这条语句会导致由“stringLength - 8" 变为负数:strncpy (charsInsideParen, userInput + 6, stringLength - 8);
-
sizeof (userInput)在 GetUserInput 函数中是指针的大小,可能是 4 或 8,而不是分配内存的长度。