| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 469 人关注过本帖
标题:[求助]关于字符串函数的问题(请求帮助)
只看楼主 加入收藏
非凡DZ
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2007-4-6
收藏
 问题点数:0 回复次数:6 
[求助]关于字符串函数的问题(请求帮助)

以下是我改过的程序,可还是有问题,主要问题有:
ch1:abababc ch2:abc
ch1:abc ch2:c
这两种情况,系统会提示ch2不在ch1中,请高手帮助,我实在搞不出来了,谢谢


//字符串与字符串比较
#include<stdio.h>
int mystrsubstring(char *p,char *q);
void main()
{
int n=0;
char ch1[30],ch2[30],*p,*q;
p=ch1,q=ch2;
printf("请输入第一个字符串:");
gets(ch1);
printf("请输入第二个字符串:");
gets(ch2);
n=mystrsubstring(ch1,ch2);
if(n>=0)
{
printf("数组2在数组1的下标为:%d\n",n);
}
if(n<0)
{
printf("数组2不在数组1中!\n");
}
}
int mystrsubstring(char *p,char *q)
{
int i=0,j=0,m=0,value,temp,temp1;
while(q[i]!='\0') //判断数组q是否到达最后一项'\0'
{
if(q[0]==p[i]) //判断数组q的第一个值是否与数组p的某一项相等
{
temp=i; //记录数组p的哪一项与数组q的第一项相等
temp1=i;
j=0;
while(q[j]!='\0') //判断数组q是否到达最后一项'\0'
{
if(q[j]!=p[temp]) //判断数组q与数组p的对应项是否相等
{
i=temp1;
break;
}
else
{
j++;
temp++;
}
}
}
else
{
m=0,j=0;
while(q[j]!='\0') //判断数组q是否到达最后一项'\0'
{

if(q[j]!=p[m]) //判断数组q与数组p的对应项是否相等
{
m++;
}
else
{
m++;
j++;
}
}
}
i++;
}
if(q[j]=='\0') //判断是否已经到达数组q的最后一项
{
value=temp1;
}
else
{
value=-1;
}
return value;
}

[此贴子已经被作者于2007-4-18 16:13:23编辑过]

搜索更多相关主题的帖子: 请求 字符 函数 
2007-04-16 17:08
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
LZ可用 strcmp(char *str1,char *str2)函数比较
str1>str2 返回正数
str1==str2 返回0
str1<str2 函数返回负数

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-16 17:20
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
忘说了...

string.h 头文件

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-16 17:21
非凡DZ
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2007-4-6
收藏
得分:0 

我的意思是不调用系统已经作好的函数,而是自己写


2007-04-16 17:24
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
int mystrsubstring(char *p,char *q)
{
int i=0,j=0,flag;
while(q[i]!='\0')
{
j=0;
flag=1;
while(q[j]!='\0')
{
if(q[j]!=p[i])
{
i++;
flag=0;
break;
}
else
{
i++;
j++;
}
}
if(flag) break;
}
return flag;
}

时间匆忙....简单安你思路改了下~``看对不?

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-16 18:31
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
你的代码我粗略看了一下,觉得算法复杂了点,里面一些语句可以不用,正好我这里有自己以前写的代码,贴出来你自己参考下吧:
================================

#include <stdio.h>
#include <assert.h>

int MyStrCmp( char *, char * );

int main( int argc, char *argv[] )
{
char str_1[10], str_2[10];

fgets( str_1, 10, stdin );
fgets( str_2, 10, stdin );

int flag = MyStrCmp( str_1, str_2 );
if ( flag == 0 )
printf( "str_1 is equal to str_2.\n" );
else if ( flag < 0 )
printf( "str_1 is smaller than str_2\n");
else
printf( "str_1 is bigger than str_2\n" );

return 0;
}

int MyStrCmp( char *str_1, char *str_2 )
{
assert( str_1 && str_2 );

for ( ; *str_1 && *str_2 && *str_1 == *str_2; str_1++, str_2++ )
;
if ( !*str_1 && !*str_2 )
return 0;
return ( *str_1 - *str_2 );
}

我的原则很简单:不做不喜欢的事!
2007-04-16 18:41
非凡DZ
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2007-4-6
收藏
得分:0 
请求帮助

2007-04-18 16:14
快速回复:[求助]关于字符串函数的问题(请求帮助)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021260 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved