鱼C论坛

 找回密码
 立即注册
查看: 2814|回复: 7

自己重写toupper函数,编译链接无错,运行直接,求解。

[复制链接]
发表于 2012-7-27 15:57:55 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 乘风 于 2012-7-27 20:43 编辑

#include "stdafx.h"
char *ptoupper(char *s);
int main(int argc, char* argv[])
{
char *p="aBCdE";
printf("%s\n",p);
//ptoupper(p);
printf("%s\n",ptoupper(p));
return 0;
}
char *ptoupper(char *s)
{
for (char *t=s;*t!='\0';t++)
{
  if (*t>='a'&&*t<='z')
  {
   *t-='a'-'A';
  }
}
return s;
}

最佳答案

查看完整内容

char *p = "aBCdE"; 改成 char p[] = "aBCdE"; 因为*p = "aBCdE"; 字符串在常量去,不允许被改变的。 数组不同,数组存放的位置是在栈中,是变量。 PS. 今后代码请注意用代码的格式编辑,别人容易帮你修改。代码格式是编辑框上方的""。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-27 15:57:56 | 显示全部楼层
char *p = "aBCdE";

改成

char p[] = "aBCdE";

因为*p = "aBCdE"; 字符串在常量去,不允许被改变的。
数组不同,数组存放的位置是在栈中,是变量。

PS. 今后代码请注意用代码的格式编辑,别人容易帮你修改。代码格式是编辑框上方的"<>"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-27 20:40:47 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-27 21:13:45 | 显示全部楼层
小甲鱼 发表于 2012-7-27 15:57
char *p = "aBCdE";

改成

追问下,遇到这种运行出错的程序,该怎么调试啊。就比如说这个,我不知道字符串在常量中不能改变这个知识点,我怎么能调试出来是这句出错呢?根据提示出粗的内存地址么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-27 21:19:14 | 显示全部楼层
乘风 发表于 2012-7-27 21:13
追问下,遇到这种运行出错的程序,该怎么调试啊。就比如说这个,我不知道字符串在常量中不能改变这个知识 ...

这个程序应该会弹出一个内存不能访问的错误代码,应该是0xc0000005之类的。大概推测下,主要还是要错多几次,就知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-27 21:19:14 | 显示全部楼层
乘风 发表于 2012-7-27 21:13
追问下,遇到这种运行出错的程序,该怎么调试啊。就比如说这个,我不知道字符串在常量中不能改变这个知识 ...

这个程序应该会弹出一个内存不能访问的错误代码,应该是0xc0000005之类的。大概推测下,主要还是要错多几次,就知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-27 21:28:17 | 显示全部楼层
小甲鱼 发表于 2012-7-27 21:19
这个程序应该会弹出一个内存不能访问的错误代码,应该是0xc0000005之类的。大概推测下,主要还是要错多几 ...

噢噢,知道了。刚刚反汇编调试了一下,数组中各元素确实存放是在栈中,当作变量,通过[ebp-XXX]来寻址。顿时豁然开朗啊。。非常感谢甲鱼大哥的指点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-28 18:39:52 | 显示全部楼层
。。。。。。。拿钱来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 04:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表