读书人

帮忙找上有关问题吧 gcc编译器未报错

发布时间: 2013-01-11 11:57:35 作者: rapoo

帮忙找下问题吧, 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;
}

读书人网 >C语言

热点推荐