gpt4 book ai didi

c - 在 C 中 - 检查字符数组中是否存在字符

转载 作者:太空狗 更新时间:2023-10-29 16:19:18 26 4
gpt4 key购买 nike

我正在尝试检查某个字符是否属于无效字符列表/数组。

来自 Python 背景,我过去只能说:

for c in string:
if c in invalid_characters:
#do stuff, etc

如何使用常规 C 字符数组执行此操作?

最佳答案

C 库中鲜为人知但非常有用(自 C89 起成为标准 — 意思是“永远”)的函数可在一次调用中提供信息。其实,有多种功能——富贵之辱。与此相关的是:

7.21.5.3 The strcspn function

Synopsis

#include <string.h>
size_t strcspn(const char *s1, const char *s2);

Description

The strcspn function computes the length of the maximum initial segment of the string pointed to by s1 which consists entirely of characters not from the string pointed to by s2.

Returns

The strcspn function returns the length of the segment.

7.21.5.4 The strpbrk function

Synopsis

#include <string.h>
char *strpbrk(const char *s1, const char *s2);

Description

The strpbrk function locates the first occurrence in the string pointed to by s1 of any character from the string pointed to by s2.

Returns

The strpbrk function returns a pointer to the character, or a null pointer if no character from s2 occurs in s1.

问题询问“对于字符串中的每个字符......如果它在无效字符列表中”。

有了这些函数,你可以写:

size_t len = strlen(test);
size_t spn = strcspn(test, "invald");

if (spn != len) { ...there's a problem... }

或者:

if (strpbrk(test, "invald") != 0) { ...there's a problem... }

哪个更好取决于你还想做什么。还有相关的 strspn() 函数有时很有用(白名单而不是黑名单)。

关于c - 在 C 中 - 检查字符数组中是否存在字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1071542/

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