【发布时间】:2020-05-21 16:02:26
【问题描述】:
我有一个客户端-服务器程序,其中客户端发送一个字符数组,如果数组的长度是偶数,服务器会删除 3 个第一个和 2 个最后一个符号(不包括 0 终止符)并将该数组发送回客户端
问题是如何从字符数组中删除特定符号(我实际上并不擅长使用指针,我想在这里使用它们可能是一个解决方案) 这是有问题的代码部分:
while (recv(s, b, sizeof(b), 0) != 0) //while connection is open
{
l = strlen(b);
if (l%2==0)//if length is even
{
for (i = j = 0; i < l; i++)
{
ch = b[i]; //current symbol
if (i!=0 || i!=1 || i!=2 || i!=l-1 || i!=l-2)
{
b[j++] = ch; // if the symbol fots the condition
}
}
}
else
{
strcpy_s(b, "The string is odd ");
}
send(s, b, sizeof(b), 0); //sending the result
}
【问题讨论】:
-
你能提供之前/之后你想要的行为的例子吗?
-
发送:qazwsxedc1 接收:wsxed
-
当代码明显是 C 时,为什么这会被标记为 C++。在 C++ 中,你会以非常不同的方式执行此操作。
-
@Sasha "thats cpp" - 我不同意。首先,您通常不会在 C++ 中使用 C 样式的数组。你会使用
std::array或std::vector。此外,您可能不会使用sizeof,因为您不需要,如果您想知道某个容器中的元素数量,您可以使用.size()或std::size。这段代码看起来像 C,恰好可以用 C++ 编译器构建。 -
从字符数组中“删除符号”是什么意思? n 字符数组是 n 字符数组。您可以在给定位置更改 char 的值,但删除它并没有多大意义。你可以做什么将指针向前移动 m-chars 并假装数组比实际短 l-chars。就是这样。看起来像是指针章节的灰尘。
标签: c++ arrays char client-server