C++ 从指针强制转换为指针C++;

C++ 从指针强制转换为指针C++;,c++,casting,C++,Casting,如果我得到下面代码行的指针,我将不胜感激 Char fileName[100] ; strncpy(static_cast<Char *>( fileName),static_cast<const Char *>(getCurrentUser()),Int32(ML_STRING_SIZE)); 我不知道如何修复它。这是修复方法 strncpy(( &fileName[0]),(getCurrentUser()),UInt32(ML_STRING_SIZE))

如果我得到下面代码行的指针,我将不胜感激

Char fileName[100] ;

strncpy(static_cast<Char *>( fileName),static_cast<const Char *>(getCurrentUser()),Int32(ML_STRING_SIZE));
我不知道如何修复它。

这是修复方法

strncpy(( &fileName[0]),(getCurrentUser()),UInt32(ML_STRING_SIZE));
  • 第一个图形和文件名[0]++DreamLax
  • 第二个参数返回const char*,因此无需强制转换
  • 第三个参数应该是无符号int

  • 三者共同解决了这个问题

    Char
    的定义是什么?文件名的类型是什么?你真的需要第二个演员吗?请提供一个。在这种情况下,您甚至不需要任何强制转换(除非
    fileName
    const
    ,在这种情况下,您会遇到更大的问题)。仅使用
    strncat(fileName,“,”ML\u STRING\u SIZE“)会出现哪些错误/警告,如果有的话?如果您传递的是
    &文件名[0]
    ,而不仅仅是
    文件名
    ,该怎么办?刺耳的短绒……在阅读并理解其文档之前,不要使用strncpy。它不是strcpy的“安全”替换品。如果你把字符串长度弄错了,那么使用strncpy只会延迟缓冲区溢出。它并没有阻止它。@user2079303:不是编译器在抱怨,而是一个linter。
    strncpy(( &fileName[0]),(getCurrentUser()),UInt32(ML_STRING_SIZE));