gpt4 book ai didi

c - C中两个指针之间的距离

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

我有一个函数,它应该读取一个字符串(其中只有数字)并返回没有重复数字的最大序列。例如:12345267890

它应该返回:345267890

我已经手动试验了代码,我相信它应该可以工作。但是当我运行它时,当它到达这一行 i=(strchr(v+i, *(v+j)))-v; 而不是获取指针之间的距离时,我得到了一些东西比如-1046583。我可以这样做吗?

char* bigSeq(char *v){

int i, j;
char *aux, *bgst;
aux=(char*) malloc(10*sizeof(char));
bgst=(char*) malloc(10*sizeof(char));
for(i=0;i<strlen(v);i++){
for(j=0;j<strlen(v+i);j++){
if(strchr(v+i, *(v+j)) != (v+j)){
if(strlen(strncpy(aux, (v+i),j)) > strlen(bgst))
strncpy(bgst, (v+i),j);
i=(strchr(v+i, *(v+j)))-v;
break;
}
}
}
return bgst;
}

最佳答案

我认为您的问题出在 strchr() 以及当它找不到您正在搜索的字符时返回的内容。在这种情况下,它返回 0,而不是传递给它的字符串的开头或结尾。

您还应该回顾如何将输入设为“const char *”,并了解为什么需要在两个循环的每次迭代中调用 strlen()。您可能会做得更好。

注意,如果非重复数字的最长子串都是10位,说明你分配的空间太小——你需要为末尾的NUL '\0'分配一个字节字符串也是。此外,strncpy() 不保证以 null 终止您的字符串;我不确定这是否是您的问题的一部分。

关于c - C中两个指针之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640928/

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