这两个函数有什么问题啊?

xcszbdnl 2012-03-11 10:24:10

void lowerchar(char *ch)
{
if(*ch>=65&&*ch<=90)
*ch+=32;
}
int charcmp(char *s,char *t)
{
for(;lowerchar(s)==lowerchar(t);s++,t++)
;
if(*s=='\0')
return 0;
else
return lowerchar(s)-lowerchar(t);
}

请问有什么问题吗??编译报错不懂。。求指导。
...全文
182 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
gold_water 2012-03-12
  • 打赏
  • 举报
回复
qixing1115 2012-03-12
  • 打赏
  • 举报
回复
问题老大了,可能访问到你不该访问到的东西,“\0"不能终止循环
比如:
a:abc乱码
b:abc乱码
要是乱码也相同,你就玩完了,当然可能性不大
touda2 2012-03-12
  • 打赏
  • 举报
回复
三楼说的对,二楼说的对
[Quote=引用 2 楼 kuzuozhou 的回复:]

lowerchar(s)==lowerchar(t)

这个空类型 怎么会判断 相等??
[/Quote]
Gsnsm 2012-03-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xzjlcyz 的回复:]
'void' illegal with all types。
这个错误很easy!
没有返回值怎么判断是不是相等,你这不是为难电脑么?
[/Quote]
void - void =?
wangchuan3533 2012-03-12
  • 打赏
  • 举报
回复
void怎么能比较呢
originaldream 2012-03-12
  • 打赏
  • 举报
回复
二楼说的正确。
xzjlcyz 2012-03-12
  • 打赏
  • 举报
回复
'void' illegal with all types。
这个错误很easy!
没有返回值怎么判断是不是相等,你这不是为难电脑么?
xcszbdnl 2012-03-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gsmfan1977 的回复:]

引用 8 楼 xzjlcyz 的回复:
'void' illegal with all types。
这个错误很easy!
没有返回值怎么判断是不是相等,你这不是为难电脑么?

void - void =?
[/Quote]
那么有tolower(s)-tolower(t)。。请问下这个tolower怎么实现的??返回值是什么??
niniyinyin 2012-03-11
  • 打赏
  • 举报
回复
for(;lowerchar(s)==lowerchar(t);s++,t++)
;
if(*s=='\0')
和for语句后的;有没有关系
我是新手,看不懂算法的正确与否,就只能看到一些编译上的失误
xcszbdnl 2012-03-11
  • 打赏
  • 举报
回复
恩。也是的。。我是仿照tolower这个函数写的。。
因为我做那个C程序设计语言的练习时看见后面答案有
for(;tolower(*s)==tolower(*t);s++,t++)
有人知道库函数这个tolower的实现方法吗??我写的lowerchar应该和它不匹配。
zzzlldf 2012-03-11
  • 打赏
  • 举报
回复
return lowerchar(s)-lowerchar(t);

看看是不是这个,lowerchar()函数返回值类型为void,你想想lowerchar(s)-lowerchar(t)的结果是?
xcszbdnl 2012-03-11
  • 打赏
  • 举报
回复
#include<stdio.h>
void lowerchar(char *ch)
{
if(*ch>=65&&*ch<=90)
*ch+=32;
}
int charcmp(char *s,char *t)
{
for(;lowerchar(s)==lowerchar(t);s++,t++)
;
if(*s=='\0')
return 0;
else
return lowerchar(s)-lowerchar(t);
}
int main()
{
char *s="abcdef";
char *t="ABefg";
int i;
i=charcmp(s,t);
if(0==i)
printf("equal\n");
else if(i>0)
printf("s>t\n");
else
printf("s<t");
getch();
return 0;
}
运行不了。。。求解释。
善良超锅锅 2012-03-11
  • 打赏
  • 举报
回复
lz我测试了 第一个函数没问问题啊
#include<stdio.h>
#include<stdlib.h>
void lowerchar(char *ch);
int main()
{
char ch;
scanf("%c",&ch);
lowerchar(&ch);
printf("%c",ch);
system("pause");
return 0;
}
void lowerchar(char *ch)
{
if(*ch>=65&&*ch<=90)
*ch+=32;
}
pengfoo 2012-03-11
  • 打赏
  • 举报
回复
lowerchar(s)==lowerchar(t)

这个空类型 怎么会判断 相等??
善良超锅锅 2012-03-11
  • 打赏
  • 举报
回复
报的什么错 贴上来

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧