A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:判断用户输入的字符串中,是否包含某个字符,包含,返回1,不包含,返回0.例如:判断itheima中是否包含t?求指导,求详细。。。思路也清晰,就是一运行,就报错,

屏幕快照 2015-04-12 13.36.03.png (63.93 KB, 下载次数: 20)

屏幕快照 2015-04-12 13.36.03.png

9 个回复

倒序浏览
  1. #include<stdio.h>
  2. #include<string.h>
  3. int char_contains(char, char);

  4. int main()
  5. {   printf("请输入要检测的字符串:");
  6.     char s[20];
  7.     scanf("%s",s);
  8.     int result = char_contains(s,'c');
  9.     printf("%d\n",result);
  10.    
  11.     return 0;
  12. }

  13. int char_contains(char *str,char c)
  14. {
  15.    int s = strlen(*str);
  16.     for (int i = 0; i<s; i++) {
  17.         if (*(str+i)==c)
  18.         {
  19.             return 1;
  20.         }
  21.         
  22.     }
  23.     return 0;
  24. }
复制代码

请看看这个代码怎么改。。。。
回复 使用道具 举报
都没人啊,没有已经过的大神驻足赐教啊吗?。。。。
回复 使用道具 举报
这个代码有两个错误,首先比较明显的是strlen()括号里面是放地址的,不是放元素的,所以在你的char指针上面加上*肯定是不对的.去掉星号就能解决.第二,你的函数声明和函数的实现里面的形参不一致,导致报错.最后strlen的返回值类型是long int类型,你的接受变量是int类型,会出现警告.基本就这些吧.改了这些之后,我这不报错也没有警告了.
回复 使用道具 举报
建议,下次出来提问写上注释,要不真的要看半天
回复 使用道具 举报
#include<stdio.h>
#include<string.h>
int char_contains(char *str,char c);

int main()
{   printf("请输入要检测的字符串:");
    char s[20];
    scanf("%s",s);
    int result = char_contains(s,'c');
    printf("%d\n",result);
   
    return 0;
}

int char_contains(char *str,char c)
{
    int s = (int)strlen(str);
    for (int i = 0; i<s; i++) {
        if (*(str+i)==c)
        {
            return 1;
        }
        
    }
    return 0;
}
回复 使用道具 举报
丶浩浩丶 发表于 2015-4-12 17:13
#include
#include
int char_contains(char *str,char c);

多谢大神,奇怪了,昨天搞好久也没弄好,今天卡了你的代码,有把握自己的代码运行了一遍,结果出了warning,居然可以顺利运行。。。。奇怪吧????难道昨天真的晕了。。。。
回复 使用道具 举报
guyinghua901018 发表于 2015-4-12 16:45
这个代码有两个错误,首先比较明显的是strlen()括号里面是放地址的,不是放元素的,所以在你的char指针上面加 ...

多谢指导。。。。
回复 使用道具 举报
扫了一眼,第三行的错误太明显了吧,你的第一个参数是字符串,你传个char应该是char  *,你的实现是对的声明却写错了
回复 使用道具 举报
  1. #include<stdio.h>
  2. #include<string.h>
  3. int char_contains(char *str,char c);

  4. int main()
  5. {   printf("请输入要检测的字符串:");
  6.     char s[20];
  7.     scanf("%s",s);
  8.     int result = char_contains(s,'c');
  9.     printf("%d\n",result);
  10.    
  11.     return 0;
  12. }

  13. int char_contains(char *str,char c)
  14. {
  15.     int s = strlen(str);
  16.     for (int i = 0; i<s; i++) {
  17.         if (*(str+i)==c)
  18.         {
  19.             return 1;
  20.         }
  21.         
  22.     }
  23.     return 0;
  24. }
复制代码

现在改成这样了,没报错,运行也没错误了。。。多谢大家、、、自己也明白了很多
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马