黑马程序员技术交流社区

标题: 一个关于C语言中字符串的问题 [打印本页]

作者: lj61785636    时间: 2015-5-19 11:25
标题: 一个关于C语言中字符串的问题
/*
编写一个函数char_contains(char str[],char c),
如果字符串str中包含字符c则返回数值1,否则返回数值0
*/

#include <stdio.h>
#include <string.h>
int char_contains(char str[],char c)
{

    for (int i = 0; i < size; i++) {            // 第一行
        if (str == c) {
            return 1;
        }
    }
    return 0;

}
int main()
{
    char name[] = "liangjian";
    int size = strlen(name);                    //第二行
    int rusult = char_contains(name,'u');
    printf("%d\n",rusult);

    return 0;
}

题目已经写好了,讲义中的一道题
我这样写无法编译,报错说我的size未定义,可是我再这里不是定义的全局变量size在for中调用吗
怎么会存在未定义问题呢




作者: mars_b0ZZ0    时间: 2015-5-19 11:25
size 不是全局变量,是局部变量,char_contains(char str[],char c)函数是无法直接引用的,除非将值传过去。第二个程序,将字符串传递过去,再从字符串中获得size,希望对你有帮助:)
作者: lj61785636    时间: 2015-5-19 11:29
下面把经过修改后正确的发一下
/*
编写一个函数char_contains(char str[],char c),
如果字符串str中包含字符c则返回数值1,否则返回数值0
*/

#include <stdio.h>
#include <string.h>
int char_contains(char str[],char c)
{
    for (int i = 0; i < strlen(str); i++) {
        if (str[i] == c) {
            return 1;
        }
    }
    return 0;
}

int main()
{
    char name[] = "liangjian";
    int rusult = char_contains(name,'u');
    printf("%d\n",rusult);
    return 0;
}
作者: lj61785636    时间: 2015-5-19 13:09
作用域问题,已解决
作者: 笔墨痕干    时间: 2015-5-19 15:21
  1. #include <stdio.h>
  2. #include <string.h>
  3. int char_contains(char str[],char c,int size)
  4. {
  5.         int i;
  6.     for (i = 0; i < size; i++) {            // 第一行
  7.         if (str[i] == c) {
  8.             return 1;
  9.         }
  10.     }
  11.     return 0;

  12. }
  13. int main()
  14. {
  15.     char name[] = "liangjian";
  16.     int size = strlen(name);                    //第二行
  17.     int rusult = char_contains(name,'u',size);
  18.     printf("%d\n",rusult);

  19.     return 0;
  20. }
复制代码

你的程序的size的作用范围不对,同时变量i的定义好像也不对把,你的定义方法是java的,在c语言中好像不能用吧!!具体我也不知道,反正我在vc中这样定义变量是不能通过的
作者: binglin    时间: 2015-5-19 20:07
#include <stdio.h>
#include <string.h>
int char_contains(char str[],char c)
{
       int a=0;      
     for (int i = 0; i < sizeof(str); i++) {
         if (str[i] == c) {
             a=1;
         }
     }
     return a;
}

int main()
{
     char name[] = "liangjian";
     int rusult = char_contains(name,'u');
     printf("%d\n",rusult);
     return 0;
}
作者: 白水丶    时间: 2015-5-19 21:13
楼主,这个代码错误好多啊,如果是c语言的话,不能在for循环中定义int类型,同时size也不是全局变量,这个程序的意思也不是要在字符串中找没有c字符,而是找传进去的字符参数
作者: 刘雨轩1314    时间: 2015-5-20 09:38
size是一个区域变量,你可以定义函数的时候用一个变量传值过去啊
作者: zhuchangbao    时间: 2015-5-20 11:49
请尽快选择最佳答案。
作者: 海洋你好    时间: 2015-5-26 20:06
size不是全局变量,如果在第1个函数中加一句int size=strlen(str);就应该是对的了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2