鱼C论坛

 找回密码
 立即注册
查看: 2103|回复: 5

一个字符串函数的求解,为什么返回值不对。

[复制链接]
发表于 2014-8-5 01:07:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//编写一个函数,它的原型如:
//        int count_chars(char const *str,char const *chars);
//函数应该在第1个参数中查找,并返回匹配第2个参数所包含的字符的数量。  

#include<stdio.h>

int count_chars( char const *str, char const *chars );

int main()
{
        char *str1 = "fa";
        char *str2 = "fuaabfbca";//返回值应该是5
       
        int len;

        len = count_chars( str1, str2 );

        printf( "%d\n", len );

        return 0;
}

int count_chars( char const *str, char const *chars )
{
        int count = 0;


        for( ; *str != '\0'; str++ )
        {
                for( ;*chars != '\0'; chars++ )
                        {
                                if( *str == *chars )
                                        count++;
                        }
        }

        //printf( "%d\n", count );
        return count;
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-5 11:05:54 | 显示全部楼层
#include<stdio.h>

int count_chars( char const *str, char const *chars );

int main()
{
        char *str1 = "fa";
        char *str2 = "fuaabfbca";//返回值应该是5
        
        int len;
                
        len = count_chars( str1, str2 );
                
        printf( "%d\n", len );
                
        return 0;
}

int count_chars( char const *str, char const *chars )
{
        int count = 0;

        char* p_start1 = str;
        char* p_start2 = chars;
        
        
        for(str=p_start1 ; *str != '\0'; str++ )
        {
                for(chars=p_start2 ;*chars != '\0'; chars++ )
                {
                        if( *str == *chars )
                                count++;
                }
        }
        
        //printf( "%d\n", count );
        return count;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-8-5 18:43:21 | 显示全部楼层
jianyuling00 发表于 2014-8-5 11:49
你这样在使用循环的时候移动指针,会使循环只能遍历一次,chars循环一次之后指针已经跑到了末尾'\0',所以s ...

就是因为在第二个循环中指针运行到末端,然后第二次回不来开始处是吧。明白了,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-5 18:43:57 | 显示全部楼层

明白了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-6 00:33:21 | 显示全部楼层
  酷暑季节  清凉一夏
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-6 01:35:14 From FishC Mobile | 显示全部楼层
涨姿势了。一开始也没看明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 20:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表