gpt4 book ai didi

c - strchr 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:27:21 26 4
gpt4 key购买 nike

我不明白为什么下面的 C 代码不起作用:

int obtainStringLength(char* str, char c1, char c2) {
char* firstOcurrence = strchr(str, c1);
char* endOcurrence = strchr(str, c2);
return 2+(endOcurrence - firstOcurrence) / sizeof(char*);
}

思路是找出c1c2之间有多少个字符:

printf("%d\n", obtainStringLength("abc def ghi", 'a', 'i')); //should yield 11

不幸的是,这总是打印 1。有什么问题吗? strchr 不应该像 C# 的 string.IndexOf() 那样工作吗?

最佳答案

除以 sizeof(char*)?这是不正确的 - 两个指针相减的结果是一个与值的数量相对应的数值 (ptrdiff_t),而不是指针或地址差。

在计算长度时也存在差一错误。所以最后一行应该是这样的:

return 1 + (endOcurrence - firstOcurrence);

关于c - strchr 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419840/

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