我在网上找了一段代码
int count(const char *needle, const char *stack) {
int n = 0;
const char *p;
if (*stack == 0) return 0;
if (*needle == 0) return 0;
p = strchr(stack, *needle);
if (needle[1] == 0) n += !!p;
if (p) {
n += count(needle + 1, p + 1);
n += count(needle, p + 1);
}
return n;
}
而且我知道如何重写除 1 行以外的所有内容
p = strchr(stack, *needle);
我真的不知道如何以最好的方式做到这一点,我什至不完全理解它在 C 中是如何工作的,同样,这一行是否应该
if (needle[1] == 0) n += !!p;
成为
if (needle[1] = 0) then n:=n+ not(not(p));
我也不确定那条线...
最佳答案
strchr( string, character)
在字符串中查找字符。如果成功,它返回一个指向找到的字符的指针,否则返回 NULL——一个空指针。
当指针受到 bool 否定(感叹号运算符)时,它的行为就像一个数字,因为空指针作为 0 否定给出 1,而非空指针否定给出 0。另一个 bool 否定使 finally 0 来自原始空指针,1 来自非空指针。
最后,如果 needle[1]
为零,则 needle
字符串是一个字符长,如果在 stack
中找到该字符> 字符串,变量 n
加 1,否则加零。
关于c - 我如何在 Pascal 中用 C 编写这一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23093377/