C语言 判断一个字符串str是否包含特定字符c

作者&投稿:况虽 (若有异议请与网页底部的电邮联系)
C语言中怎么判断一个字符串包含在另一个字符串里面?~

#include
#include
int flag=0;
void main()
{ int f(char str1[],char str2[]);
char str1[20],str2[20],*s1,*s2;

printf("input string1:
");
gets(str1);
s1=str1;
printf("input string2:
");
gets(str2); /*str2为要验证的字串*/
s2=str2;
f(s1,s2);
if (flag==1)
printf("
YES!

");
else if (flag==0)
printf("
NO!

");
}

int f(char*s1,char*s2)
{char *p,*q;

for(;*s1!='\0';s1++)
{if (*s2==*s1) /*判断字符串中是否有和要判断的字串首字符相同的字符*/
{ flag=1;
p=s1 ; /*s1 p 为第一个相同字符的地址*/
q=s2;
for(;*q!='\0';) /*如果有则判断接下去的几个字符是否相同*/
{ if (*q++!=*p++)
{ flag=0;break;
}
}
}
if (flag==1)break;

}

return(flag);
}

#include
char *strchr(const char *s, int c);

C标准库中的strchr函数返回字符c在字符串s的位置,如果返回的指针为NULL,那么表示字符串中不包含该字符

#include
#include

void main() {
char *s = "hello";
char c = 'l';
if (strchr(s, c)) {
printf("%s
", "yes");
}
else {
printf("%s
", "no");
}
}

看看你的程序:
for(i=0;i<=strlen(s);i++)
{if(s[i]==c) break;return 1;}

if(s[i]==c)返回ture,执行break,跳到循环体的开始下一次循环;
if(s[i]==c)返回false,不执行break,执行return 1,直接返回了1。--->这个就是问题所在了。就是匹配了你break了,只要有一个不匹配你就直接return 1。

修改如下:
for(i=0;i<=strlen(s);i++)
{
if(s[i]!=c) //不是==,而是!=
break;
else
return 1;
}

int search(char s[],char c)
{
int i;
for(i=0;i<=strlen(s);i++)
if(s[i]==c)
{return 1;break;}
return 0;
}

main()
{
char str[30],c;
scanf("%s %c",&str,&c);
printf("%d\n",search(str,c));
}
search函数返回类型应为整型,if语句应括起来。

char search(char s[],char c)
{
int i;
for(i=0;i<=strlen(s);i++)
if(s[i]==c) break;
if(i>strlen(s))
return 0;
else
return 1;
}
void main()
{
char str[30],c;
scanf("%s %c",str,&c);
getchar();
printf("%d",search(str,c));
}
试试吧

if后面没有加花括号
for(i=0;i<=strlen(s);i++)
{
if(s[i]==c)
{
break;
return 1;
}
}
return 0;
}


玉溪市15182958226: C语言 判断一个字符串str是否包含特定字符c -
由丽吉福: 看看你的程序: for(i=0;i<=strlen(s);i++) {if(s[i]==c) break;return 1;}if(s[i]==c)返回ture,执行break,跳到循环体的开始下一次循环; if(s[i]==c)返回false,不执行break,执行return 1,直接返回了1.--->这个就是问题所在了.就是匹配了你break了,只要有一个不匹配你就直接return 1.修改如下: for(i=0;i<=strlen(s);i++) {if(s[i]!=c) //不是==,而是!=break;elsereturn 1; }

玉溪市15182958226: C语言: 字符串操作:判断字符串 char* str1 是否自起始位置起包含 char *str2 的内容. -
由丽吉福: 用一个while 循环语句,循环条件为*str2!=`\0`循环中if (*str1!=*str2)break,每次循环后两个指针自加一,最后判断*str2是否为结束符, 是就证明包含、

玉溪市15182958226: C语言定义一个函数,判断字符串中是否包含另一个子串 -
由丽吉福: int find(char* source/*源串*/, char* target/*目标串*/)//找到返回位置,未找到返回-1 { int i,j; int s_len=strlen(source); int t_len=strlen(target); if(t_len>s_len) { return -1; } for(i=0;i<=s_len-t_len;i++) { j=0; int flag=1; if(source[i]==target[j]) { int k,p=i; for(k...

玉溪市15182958226: c语言c语言编写函数检查字符串否包含全部小写字母和空格 -
由丽吉福: 1. #includevoid count(char *str);int letters=0,space=0,digit=0,others=0;int main(void){ char str[100]; printf("Input a string:\n"); gets(str); count(str); printf("char=%d\nspace=%d\ndigit=%d\nothers=%d\n",letters,space,digit,others); return 0;}void ...

玉溪市15182958226: 如何判断一个字符串中是否包含另一个字符串 -
由丽吉福: C的函数库里有一个叫作char *strstr( const char *s1, const char *s2 )的函数,是用来判断s1指向的字符串里是否包含s2指向的字符串的,若包含,则返回s2指向的字符串的首地址,否则返回NULL.包含strstr所在的头文件string.h后,直接调用...

玉溪市15182958226: 在C语言中怎样判断一个字符串中是否包含另一个字符串 -
由丽吉福: 如果“一个字符串”全部是英文字符的话,只要开一个char s[128];的哈希表,每个在其中出现的字符按它的ASCII值,将相应的元素置为1; 然后扫描“另一个字符串”,检测每一个字符,在数组中对应元素的值是否为1.若这个串里的对应元...

玉溪市15182958226: C语言. 编写函数,判断在给定字符串中是否包含指定的子串 -
由丽吉福: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27#include<stdio.h> #include<string.h> intmain(){charstr[100],s[100],i,j,flag=0;printf("请输入主串:\n");gets(str);printf("请输入字串:\n");gets(s);i=0,j=0;...

玉溪市15182958226: C语言中怎样输出一个字符串是否包含另一个字符串的 -
由丽吉福: 请查阅 string.h strstr函数 函数名: strstr 功 能: 在串中查找指定字符串的第一次出现 用 法: char *strstr(char *str1, char *str2); 说明:返回指向第一次出现str2位置的指针,如果没找到则返回NULL. 调用函数,判断返回值是否等于NULL,决定是否输出 如; char *p=".c"; //需要的子串 if(strstr(A,p)) printf("%s",A);

玉溪市15182958226: 一个简单的C语言问题:写一个函数,判断字符串S中是否包含子串C -
由丽吉福: 你是初学C吧,我也是 你的意思是不用函数库吧,行! /*写一个函数,判断字符串S中是否包含子串C*/ #include <stdio.h #include<string.h int flag=0; void main() { int f(char str1[],char str2[]); char str1[20],str2[20],*s1,*s2; printf(input string1:\n); gets(...

玉溪市15182958226: 如何判断字符串1是否包含字符串2? -
由丽吉福: 假使我们现在有两个两个字符串abcgdefghijklmn,我们要查找的是ghijk,还有的是一串xyz,我们先查第一串,我们取g为基准值,然后我们与a比较不是,那么往下跳到b,也不是继续,到了g,我们比较是的,那么我们取h再与d比较,不是,跳出比较,然后取e来与g比较,不是,再次到了第二个g,我们逐个比较,比较出来是的,那么我们返回该g的地址,再我们来看查找xyz,我们逐个比较都不是,知道我们比较到了l,都不是,那么我们直接返回false了,因为后面长度都不够3个字母了,肯定不是了,呵呵,至于实现,我不知道你用什么语言,就自己搞定了啊,哈哈

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网