c - 我如何在 Pascal 中用 C 编写这一行?

标签 c pascal

我在网上找了一段代码

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/

相关文章:

c - #ifdef SIOCSHWTSTAMP 未找到

c - 内存如何存储有符号和无符号字符

c - 快速读取文件(stream_lf 格式)

c - 从其他源文件访问结构

c - 如何理解ACC_MODE这个宏?

notepad++ - 尝试通过 Notepad++ 编译 Pascal 程序时失败?

user-interface - 使用 Pascal 构建 GUI 表单

delphi - 为淘汰赛创建二叉树

c - 将内存释放到C中的二维数组

c - 为什么 C 使用星号来声明指针,而不是像 Pascal 那样使用插入符号?