gpt4 book ai didi

c - 在C中删除字符串数组的前两个元素

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:47 24 4
gpt4 key购买 nike

如何删除字符串数组的前两个元素?我有一个类似这样的代码。

char *x[10];
..............
..............
..............
char *event[20];
event[0]=strtok(x[i]," ");
event[1]=strtok(NULL," ");
event[2]=strtok(NULL," ");
event[3]=strtok(NULL," ");
event[4]=strtok(NULL," ");
event[5]=strtok(NULL," ");
for(i=2;i<length;i++)
{
strcpy(event[i-2],event[i]);
}

我观察到只有 event[0] 具有正确的值。我在 for 循环之前打印了 event[][] 的内容,它显示正确。你能告诉我为什么这是错的吗?以及可能的解决方案?

最佳答案

您不应在此代码中使用 strcpy()。 API strtok()在发现的定界符处终止后,将向您返回指向在原始源缓冲区中发现的定界标记的指针。。因此,您在不应该使用的地方使用了 strcpy()

您的 events[] 数组具有从 strtok() 返回的指针。只需抛出前两个指针并将其他指针向下移动:

for(i=2;i<length;i++)
event[i-2] = event[i];
length -= min(length, 2);

注意:需要 min() 来确保您的长度,有符号或无符号,在事件 length 在入口处尺寸过小。

关于c - 在C中删除字符串数组的前两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13736948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com