部分C库函数重写以及反汇编分析之 toupper()
2012-07-27 21:31
337 查看
/*//////////////////////////////////////////////////////////////////////////////////// toupper()将字符串中小写字母全部转为大写////////////////////////////////////////////////////////////////////////////////////*/#include "stdafx.h"char *ptoupper(char *s);int main(int argc,
char* argv[]){//char *p="aBCdE";char p[]="aBCdE";printf("%s\n",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";结果编译连接通过,但是运行出错。小甲鱼大哥解说“因为*p
= "aBCdE"; 字符串在常量中,不允许被改变的。数组不同,数组存放的位置是在栈中,是变量。”,于是亲自反汇编调试了一下,数组中各元素得存放确实是在栈中,当作变量,通过[ebp-XXX]来寻址。顿时豁然开朗啊。。非常感谢甲鱼大哥的指点。
char* argv[]){//char *p="aBCdE";char p[]="aBCdE";printf("%s\n",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";结果编译连接通过,但是运行出错。小甲鱼大哥解说“因为*p
= "aBCdE"; 字符串在常量中,不允许被改变的。数组不同,数组存放的位置是在栈中,是变量。”,于是亲自反汇编调试了一下,数组中各元素得存放确实是在栈中,当作变量,通过[ebp-XXX]来寻址。顿时豁然开朗啊。。非常感谢甲鱼大哥的指点。
相关文章推荐
- 部分C库函数重写以及反汇编分析之memset()
- 部分C库函数重写以及反汇编分析之memmov()
- 部分C库函数重写以及反汇编分析之memch()
- 部分C库函数重写以及反汇编分析之memcpy()
- C++ 函数反汇编跟踪以及栈结构分析
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr,
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
- 1.3 函数调用反汇编解析以及调用惯例案例分析
- 在js中获取query string 以及重写URL的函数
- Unity3d MonoBehaviour的可重写函数 及部分执行先后顺序
- C++ 有关于函数对象以及谓词部分练习以及知识点的总结
- c++反汇编代码分析--偷调函数
- C++反汇编第三讲,反汇编中识别虚表指针,以及指向的虚函数地址
- Rhyme/Java 多态的深入理解—多态的详细分析以及多态应用之钩子函数的详细解释
- Oracle 分析函数详解(Analytic Functions)--概念部分
- jQuery源码分析之深入理解jQuery.data,jQuery._data以及data实例函数十八问
- 【双目视觉探索路4】分析整理Learning OpenCV3书中立体标定、校正以及对应代码(2)之部分验证
- 反汇编代码分析--函数调用