C指针的难题???

caiyi9000 2001-07-02 04:47:55
大家帮我找找下面代码的错误?
int myStrUpr(BYTE *s) //将小写字符串转换为大写
{
BYTE c;
int i;

for (i=0;(c=s[i])!=0;i++)
{
if (c>='a' && c<='z')
{
s[i]=c-'a'+'A';
}
}
return 0;
}

main()
{
myStrUpr((BYTE*)"display"); //出错
}
...全文
114 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
seedundersnow 2001-07-03
  • 打赏
  • 举报
回复

我用VC6.0,win32 console application supports MFC

seedundersnow 2001-07-03
  • 打赏
  • 举报
回复

我的测试是可以的呀......

caiyi9000 2001-07-03
  • 打赏
  • 举报
回复
就算改成
main()
{
char ss[]="display";
myStrUpr((BYTE*)ss);
}
也不能完成将"display"该成大写的功能
caiyi9000 2001-07-03
  • 打赏
  • 举报
回复
seedundersnow(一下子打死七个)is goode, but it is not whold faults of these codes.
zzbsw 2001-07-02
  • 打赏
  • 举报
回复
指针就是可以操作的内存地址,你如果想通过指针写,那么你要确定这个内存地址是可以写的。但是一个常量,你写它干啥?
holyfire 2001-07-02
  • 打赏
  • 举报
回复
>>// "display" 是常量,您企图写,当然出错. 应当这样:

与编译器有关的,偶在TC和BC3.1中就可以改
seahorse 2001-07-02
  • 打赏
  • 举报
回复
楼上的说的对,这是后编译系统实际上讲display在临时空间的指针传递,但是由于对于临时空间的维护,有可能冲掉!
seedundersnow 2001-07-02
  • 打赏
  • 举报
回复

// "display" 是常量,您企图写,当然出错. 应当这样:
main()
{
char ss[]="display";
myStrUpr((BYTE*)ss);
}
holyfire 2001-07-02
  • 打赏
  • 举报
回复
main()
{
myStrUpr((BYTE*)"display");
}

这个"display"不知道在你的编译器里如何处理,可不可以修改

main()
{
char * str = "display";
myStrUpr((BYTE*)str);
}

可能更安全一点。
opennews 2001-07-02
  • 打赏
  • 举报
回复
display,啥玩意
holyfire 2001-07-02
  • 打赏
  • 举报
回复
int myStrUpr(BYTE *s) //将小写字符串转换为大写
{
BYTE c;
int i;

for (i=0;(c=s[i])!=0;i++)
{
if (c>='a' && c<='z')
{
s[i]=c-('a'-'A'); //错误在这里,BYTE是无符号型字符,没有负数,运算结果错误导致
}
}
return 0;
}

main()
{
myStrUpr((BYTE*)"display");
}

69,369

社区成员

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

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