首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙找上有关问题吧, gcc编译器未报错,无输出结果

2013-01-11 
帮忙找下问题吧, gcc编译器未报错,无输出结果求字符串ch的所有字符 最早出现在字符串str中的哪个位置1 #in

帮忙找下问题吧, gcc编译器未报错,无输出结果
求字符串ch的所有字符 最早出现在字符串str中的哪个位置 
  1 #include<stdio.h>
  2 #include<string.h>
  3 
  4 //  求字符串ch的所有字符 最早出现在字符串str中的哪个位置 
  5 const char* strchr9(const char* str, const char *ch)
  6 {
  7         const char *location;
  8         const char *pstr = str;
  9         const char *pch = ch;
 10         int a  = strlen( str );
 11     while(*pch != '\0')
 12     {
 13             while( *pstr != '\0' )
 14             {
 15                     if( *pch  == *pstr )
 16                     {
 17                             if( pstr - str < a)
 18                             {
 19                                     a = pstr - str;
 20                                     location = pstr;
 21                             }
 22                             pstr = str;
 23                             break;
 24                     }
 25 
 26             }
 27             pch++;
 28     }
 29     return location;
 30 }
 31 
 32 int main()
 33 {
 34     char* str = "abcde";
 35     char *ch = "32boe";
 36     printf("%d\n", strchr9(str, ch) - str);
 37     return 0;
 38 }

[解决办法]

引用
求字符串ch的所有字符 最早出现在字符串str中的哪个位置 
   1 #include<stdio.h>
   2 #include<string.h>
   3 
   4 //  求字符串ch的所有字符 最早出现在字符串str中的哪个位置 
   5 const char* strchr9(const char* str, const char *ch)
   6 {
   7         const char *location;
   8         const char *pstr = str;
   9         const char *pch = ch;
  10         int a  = strlen( str );
  11     while(*pch != '\0')
  12     {
  13             while( *pstr != '\0' )
  14             {
  15                     if( *pch  == *pstr )
  16                     {
  17                             if( pstr - str < a)
  18                             {
  19                                     a = pstr - str;
  20                                     location = pstr;
  21                             }
  22                             pstr = str;
  23                             break;
  24                     }
  25 
  26             }
  27             pch++;
  28     }
  29     return location;
  30 }
  31 
  32 int main()
  33 {
  34     char* str = "abcde";
  35     char *ch = "32boe";


  36     printf("%d\n", strchr9(str, ch) - str);
  37     return 0;
  38 }
 


改下
   5 const char* strchr9(const char* str, const char *ch)
   6 {
   7         const char *location;
   8         const char *pstr = str;
   9         const char *pch = ch;
  10         int a  = strlen( str );
  11     while(*pch != '\0')
  12     {
  13             while( *pstr != '\0' )
  14             {
  15                     if( *pch  == *pstr )
  16                     {
  17                             if( pstr - str < a)
  18                             {
  19                                     a = pstr - str;
  20                                     location = pstr;
  21                             }
  22                             pstr = str;
  23                             break;
  24                     }
                         else
                         {
                                 pstr++;
                         }
  25 
  26             }


  27             pch++;
                 pstr = str;
  28     }
  29     return location;
  30 }
[解决办法]

引用:
求字符串ch的所有字符 最早出现在字符串str中的哪个位置 
  1 #include<stdio.h>
  2 #include<string.h>
  3 
  4 //  求字符串ch的所有字符 最早出现在字符串str中的哪个位置 
  5 const char* strchr9(const char* str, const char *ch)
  6 {
  7       ……


//按照楼主的思路改下
#include<stdio.h>
#include<string.h>

const char* strchr9(const char* str, const char *ch)
{
        const char *location;
        const char *pstr = str;
        const char *pch = ch;
        int len  = strlen( str );
        int a;    
    while(*pch != '\0')
    {
            pstr = str;
            a = len;            
            while( *pstr != '\0' )
            {
                    if( *pch  == *pstr )
                    {
                            if( pstr - str < a)
                            {
                                    a = pstr - str;
                                    location = pstr;
                            }
                            pstr = str;
                            

return location;                    
            }
               pstr++;
            }


            pch++;
    }
    return location;
}

int main()
{
    char* str = "abcde";
    char *ch = "32boe";
    printf("%d\n", strchr9(str, ch) - str);
    return 0;
}

热点排行