以下代码示例
...
#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, BUFFER_MAX_SIZE);
...
}
}
导致两个strncat()调用的标题中都有错误。我不知道为什么会这样,因为如您所见,inputBuffer和outputBuffer成员未声明为常量。此外,在我对代码进行一些更改之前,它还可以正常工作。还会有其他影响吗?
我想这些行就足够了,但是如果需要,我可以在以后添加更多行。
答案 0 :(得分:1)
看起来您在调用strncat()
时颠倒了源缓冲区和目标缓冲区的顺序
char * strncat ( char * destination, const char * source, size_t num );