在strcat()中从“ const char *”到“ char *”的无效转换

以下代码示例

...
#include <cstring>
#include <set>

constexpr int BUFFER_MAX_SIZE = 1024;

struct connection
{
    ...
    char inputBuffer[BUFFER_MAX_SIZE];
    char outputBuffer[BUFFER_MAX_SIZE];
};

int main(int argc,char **argv)
{
    ...
    std::set<connection> clientConnections;
    ...

    for (auto &clientConnection : clientConnections)
    {
        char buffer[BUFFER_MAX_SIZE];

        ...
        strncat(clientConnection.inputBuffer,buffer,BUFFER_MAX_SIZE);
        ...
        strncat(clientConnection.outputBuffer,BUFFER_MAX_SIZE);
        ...
    }
}

导致两个strncat()调用的标题中都有错误。我不知道为什么会这样,因为如您所见,inputBuffer和outputBuffer成员未声明为常量。此外,在我对代码进行一些更改之前,它还可以正常工作。还会有其他影响吗?

我想这些行就足够了,但是如果需要,我可以在以后添加更多行。

wwsfc 回答:在strcat()中从“ const char *”到“ char *”的无效转换

看起来您在调用strncat()时颠倒了源缓冲区和目标缓冲区的顺序

char * strncat ( char * destination,const char * source,size_t num );
本文链接:https://www.f2er.com/3116190.html

大家都在问