黑马程序员技术交流社区

标题: [已解决]for和while循环问题,求助 [打印本页]

作者: 名侦探柯基    时间: 2016-8-28 16:19
标题: [已解决]for和while循环问题,求助
本帖最后由 名侦探柯基 于 2016-8-30 11:10 编辑

需求:判断一个字符串是否包含某个字符,如果包含,返回其首次出现的位置,否则返回-1

我通过for循环可以满足要求,在用while循环的时候,发现查找'a'的时候,返回值不是第一次出现的位置.
自己想不明白i=0的时候为什么不能输出

int searchChar(char str[],char key){
   
//    for (int i=0; str!='\0'; i++) {
//        if (str==key) {
//            return i;
//        }
//    }
    int i=0;
    while (str!='\0') {
        i++;
        if (str==key) {
        return i;
        }
    }
   
    return -1;
}
int main(int argc, const char * argv[]) {
    char str1[]="abcdefadcdef";
    int loc=searchChar(str1, 'a');
    printf("%d\n",loc);
   
    return 0;
}

作者: 名侦探柯基    时间: 2016-8-28 18:24
顶起来,高手在哪里?
作者: 细听风语为梧桐    时间: 2016-8-28 18:25
在while语句中的if 语句中加入 break语句,估计能解决问题
作者: ln931460905    时间: 2016-8-29 06:36
把  i++ 放到if语句后面就可以了
作者: 小海盗。    时间: 2016-8-29 10:44
把你的i++;放到if判断的后面.

Snip20160829_2.png (51.02 KB, 下载次数: 47)

Snip20160829_2.png

作者: 小海盗。    时间: 2016-8-29 10:46
细听风语为梧桐 发表于 2016-8-28 18:25
在while语句中的if 语句中加入 break语句,估计能解决问题

函数中return就会直接退出函数体,无所谓你那是循环还是什么.都会立即退出,比如你在main函数里面第一句直接return 0;程序直接会退出,什么都不会执行.
作者: 杨光0618    时间: 2016-8-29 23:39
i++放下边
作者: 名侦探柯基    时间: 2016-8-30 10:43
小海盗。 发表于 2016-8-29 10:44
把你的i++;放到if判断的后面.

非常感谢!我还是得多练呀!
作者: 名侦探柯基    时间: 2016-8-30 10:45
ln931460905 发表于 2016-8-29 06:36
把  i++ 放到if语句后面就可以了

谢谢!我还得多练~
作者: wanghanqing    时间: 2016-9-3 22:53
函数中return就会直接退出函数体,无所谓你那是循环还是什么.都会立即退出,比如你在main函数里面第一句直接return 0;程序直接会退出,什么都不会执行.
作者: Rowan    时间: 2016-9-4 00:04
看的头晕,害得多练练




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