提问人:ajcheng12 提问时间:9/5/2022 更新时间:9/5/2022 访问量:79
在不使用局部变量的情况下,我如何遍历存储在字符数组中的 c 字符串,以便我可以检查其中是否有字符?
Without using local variables, how could I loop through a c string stored in a character array so that I can check to see if a character is within it?
问:
我正在尝试实现一个布尔函数,如果字符 c 在字符数组字符集中,则返回 true。但是,给定的说明指定我不使用局部变量。我假设局部变量包括 for 循环中的变量,例如 int i。下面是我当前使用 for 循环的代码。如果我不使用局部变量,我知道它需要一个 while 循环,但我的问题是 while 循环的条件是什么?
bool isInSet(char c, const char charset[]){
for(int i = 0; i < 80; i++)
{
if(c == charset[i])
return true;
}
return false;
}
答:
0赞
Muhammad Talha Tahir
9/5/2022
#1
你的 char 数组是 const,但是如果你可以删除那个 const,你可以使用这样的东西:
while(*(charset) != '\0'){
//your logic;
charset++;
}
评论
0赞
ajcheng12
9/5/2022
想通了,但在删除常量时我会牢记这一点。谢谢。
1赞
Remy Lebeau
9/5/2022
您根本不需要删除 const 即可使用这样的循环。所讨论的常量附加到所指向的内容上,而不是指针本身。
1赞
PaulMcKenzie
9/5/2022
#2
while 循环的条件是什么?
循环可以使用传入指针作为循环条件。while
bool isInSet(char c, const char charset[])
{
while (*charset) // loop until we find the terminating null character
{
if (*charset == c)
return true;
++charset; // go to next position
}
return false;
}
评论
0赞
ajcheng12
9/5/2022
非常感谢您的帮助。这奏效了,我现在明白我可以在 while 循环中反转逻辑,因此无需为其条件初始化变量。
评论
bool isInSet(char c, const char charset[]) { return strchr(charset, c)?true:false; }
.请参见 strchr。return strchr(charset, c);
strchr(charset, c)