gpt4 book ai didi

c - 我的函数有什么问题(从文本文件中删除字符串)

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:30 24 4
gpt4 key购买 nike

我想写一个函数,从文本文件中删除某些单词。程序工作正常,但 valgrind 说了一些不同的话:

==3411== Source and destination overlap in strcpy(0x51f1c90, 0x51f1c92)
==3411== at 0x4C2C085: strcpy (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3411== by 0x400AD7: DELTEword (remove2.c:113)
==3411== by 0x4009A1: main (remove2.c:73)

同样,当我尝试删除例如单词:“go”时,有时会发生单词“ro”也被删除的情况。为什么?

这是我的代码:

int DELTEword(char *word, char *KEYword)
{
int i, k = 0, l = 0, length;
char *ptr;

if(word != NULL)
{
length = strlen(KEYword);
for(i = 0; word[i] != '\0'; i++)
{
if(word[i] == KEYword[k])
{
l++;
k++;
}

if(l == length)
{
ptr = &word[i];
strcpy((ptr - length) + 1, ptr + 1);
l = 0;
k = 0;
}
}
return 1;
}
else return 0;
}

最佳答案

使用 memmove 而不是 strcpy 来打乱数据,因为如果源和目标重叠,则不建议使用 strcpymemmove 在重叠情况下可以安全使用..

关于c - 我的函数有什么问题(从文本文件中删除字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18783631/

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