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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 名侦探柯基 于 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;
}

10 个回复

倒序浏览
顶起来,高手在哪里?
回复 使用道具 举报
在while语句中的if 语句中加入 break语句,估计能解决问题
回复 使用道具 举报
把  i++ 放到if语句后面就可以了
回复 使用道具 举报
把你的i++;放到if判断的后面.

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

Snip20160829_2.png
回复 使用道具 举报
细听风语为梧桐 发表于 2016-8-28 18:25
在while语句中的if 语句中加入 break语句,估计能解决问题

函数中return就会直接退出函数体,无所谓你那是循环还是什么.都会立即退出,比如你在main函数里面第一句直接return 0;程序直接会退出,什么都不会执行.
回复 使用道具 举报
i++放下边
回复 使用道具 举报
小海盗。 发表于 2016-8-29 10:44
把你的i++;放到if判断的后面.

非常感谢!我还是得多练呀!
回复 使用道具 举报
ln931460905 发表于 2016-8-29 06:36
把  i++ 放到if语句后面就可以了

谢谢!我还得多练~
回复 使用道具 举报
函数中return就会直接退出函数体,无所谓你那是循环还是什么.都会立即退出,比如你在main函数里面第一句直接return 0;程序直接会退出,什么都不会执行.
回复 使用道具 举报
看的头晕,害得多练练
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马