| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2563 人关注过本帖
标题:[求助]关于strcmp比较函数的编写
只看楼主 加入收藏
ssss1127
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-21
收藏
 问题点数:0 回复次数:14 
[求助]关于strcmp比较函数的编写
include<stdio.h>
char strcmp(char c[],char d[],int *q);
int main()
{
char a[20],b[20];
int p;
gets(a);
gets(b);
strcmp(a,b,&p);
if(p==0)
printf("相同");
if(p<0)
printf("-1");
if(p>0)
printf("1");

}
char strcmp(char c[],char d[],int *q)
{
int i;
for(i=0;i<20;i++)
{
if(c[i]<d[i])
{
q=-1;break;
}
if(c[i]==d[i])
{
q=0;
}
if(c[i]>d[i])
{
q=1;break;
}
}

}
一直过不了大家看看``
搜索更多相关主题的帖子: strcmp 函数 编写 
2007-06-26 13:05
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
收藏
得分:0 

你自己调试下,我没调试,现写的。
#include<stdio.h>
#include"stdio.h"
char strcmp(char c[],char d[],int *q);
int main()
{
char a[20],b[20];
int p;
gets(a);
gets(b);
strcmp(a,b,&p);
if(p==0)
printf("xiangdeng");
if(p<0)
printf("-1");
if(p>0)
printf("1");
getch();

}
char strcmp(char c[],char d[],int *q)
{
int i=0;
loop:while(c[i]!='\0'&&d[i]!='\0'){
if(c[i]==d[i]){
++i;
*q=0;
goto loop;}
if(c[i]<d[i]){
*q=-1;
break;}
else
*q=1;
break;}
}


深山苦学C语言,终年不见外面世界。
2007-06-26 14:06
ssss1127
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-21
收藏
得分:0 
谢谢哈```
2007-06-26 20:02
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
收藏
得分:0 

不用客气,加油!


深山苦学C语言,终年不见外面世界。
2007-06-26 20:16
snipered
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2007-10-5
收藏
得分:0 

我做的!!
调试过了!
#include<stdio.h>

int strcmp(char c[],char d[]);

int strcmp(char c[],char d[])
{
int i;
int q;
for(i=0;i>0;i++)
{
if(c[i]==d[i])
{
q=0;
return q;
}
if(c[i]<d[i])
{
q=-1;
return q;
}
else
{
q=1;
return q;
}
}

}
int main()
{
char a[20],b[20];
int p;
gets(a);
gets(b);
p=strcmp(a,b);

if(p<0)
puts(b);
else if(p>0)
puts(a);
else
printf("相等");

}


2007-10-13 13:57
copu1
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2007-10-8
收藏
得分:0 
strcmp函数不是标准的TC函数嘛~
干嘛还要自己编写!

有点舍近求远了吧

2007-10-13 14:06
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
对初学者来说,自己谢谢这种函数,可以加深对字符串处理的理解

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-13 14:12
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
char strcmp(char c[],char d[],char *q);
{
while( *c++ == *d++ );

if (*c=='\0') return *q = 0 ;

else return *q = *c-*d ;
}


[此贴子已经被作者于2007-10-13 14:35:34编辑过]


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-10-13 14:12
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 

LZ````楼错误2出```

在你设计的函数里```q被定义为指针```你竟然给它整形值``

你设计函数为char``怎么没见到一句 return ```这在2楼也是一样```

还有一点很不好 ``你定义*q为int```又要返回char类型的值``然后在主函数里的比较又是数值比较``不是字符比较

5楼也有错误```

for(i=0;i>0;i++)
{
if(c[i]==d[i])
{
q=0;
return q;
}


一遇到相等的就return ??? ``怎么不考虑后面是不是还有``没有比较的``


[此贴子已经被作者于2007-10-13 14:39:22编辑过]


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-10-13 14:24
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
以下是引用死了都要C在2007-10-13 14:12:33的发言:
char strcmp(char c[],char d[],char *q);
{
while( *c++ == *d++ );

if (*c=='\0') return *q = 0 ;

else return *q = *c-*d ;
}



这样如果两个字符串相等的话,就会越界,得到不正确的结果

我觉得q应该是int类型比较好吧,两个char相减的结果很可能是不可打印的字符


从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-13 15:27
快速回复:[求助]关于strcmp比较函数的编写
数据加载中...
 
   



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

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