我对C编程还很陌生,如果我们有以下条件,我如何能够检查字符串是否包含特定字符:
void main(int argc, char* argv[]){
char checkThisLineForExclamation[20] = "Hi, I'm odd!"
int exclamationCheck;
}
因此,如何将exclamationCheck
设置为1(如果为“!”)?存在,如果不存在则为0?非常感谢您提供的任何帮助。
答案 0 :(得分:1)
使用strchr(),例如:
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "Hi, I'm odd!";
int exclamationCheck = 0;
if(strchr(str, '!') != NULL)
{
exclamationCheck = 1;
}
printf("exclamationCheck = %d\n", exclamationCheck);
return 0;
}
输出:
exclamationCheck = 1
如果您正在寻找一种简洁的班轮,则可以遵循@melpomene的方法:
int exclamationCheck = strchr(str, '!') != NULL;
如果不允许使用C字符串库中的方法,则按照@SomeProgrammerDude的建议,您可以简单地遍历字符串,并且如果有任何字符是感叹号,如本示例所示:
#include <stdio.h>
int main(void)
{
char str[] = "Hi, I'm odd";
int exclamationCheck = 0;
for(int i = 0; str[i] != '\0'; ++i)
{
if(str[i] == '!')
{
exclamationCheck = 1;
break;
}
}
printf("exclamationCheck = %d\n", exclamationCheck);
return 0;
}
输出:
exclamationCheck = 0
请注意,当找到至少一个感叹号时,您可以中断循环,这样就无需遍历整个字符串。
PS:What should main() return in C and C++? int
,而不是void
。
答案 1 :(得分:1)
您可以使用普通搜索来搜索!
字符,
代码
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "Hi, I'm odd!";
int exclamationCheck = 0;
int i=0;
while (str[i]!='\0'){
if (str[i]=='!'){
exclamationCheck = 1;
break;
}
i++;
}
printf("exclamationCheck = %d\n", exclamationCheck);
return 0;
}