【发布时间】:2016-08-24 13:18:19
【问题描述】:
如果我得到指向以下代码行的指针将不胜感激
Char fileName[100] ;
strncpy(static_cast<Char *>( fileName),static_cast<const Char *>(getCurrentUser()),Int32(ML_STRING_SIZE));
我收到 Lint 错误:从指针转换到指针。如果我在没有静态的情况下进行转换,则会将错误作为 C 样式转换。如果我不使用任何演员
strncpy(( fileName),(getCurrentUser()),Int32(ML_STRING_SIZE)); it throws
array type passed to function expecting a pointer
我不知道如何解决它。
【问题讨论】:
-
Char定义为什么?fileName的类型是什么?你真的需要第二个演员吗?请提供minimal reproducible example。 -
在这种情况下,您甚至不需要任何演员表(除非
fileName是const,在这种情况下您的问题要大得多)。 -
仅使用
strncat(fileName, "_", ML_STRING_SIZE);会得到哪些错误/警告(如果有)? -
如果你传递
&fileName[0]而不是fileName怎么办?粗犷的短绒... -
在您阅读并理解其文档之前,请勿使用
strncpy。它不是strcpy的“安全”dropin 替代品。如果你搞砸了你的字符串长度,strncpy的使用只会推迟缓冲区溢出。它不会阻止它。