[c/c++] programming之路(3)、转义字符及内存

一、转义字符

1 #include<stdio.h>
2
3 void main(){
4     printf("hello \nworld\a");//    \n换行    \a机器响一声
5     getchar();//等待
6 }
 1 #include<stdio.h>
 2
 3 void main(){
 4     //printf("hello world");
 5     putchar(‘h‘);
 6     putchar(‘e‘);
 7     putchar(‘l‘);
 8     putchar(‘l‘);
 9     putchar(‘o‘);
10     putchar(‘\n‘);//转义字符也是一个字符
11     putchar(‘w‘);
12     getchar();
13 }
 1 #include<stdio.h>
 2
 3 void main1(){
 4     while(1)    putchar(‘\a‘);
 5     putchar(‘A‘);//输出一个字符
 6     putchar(‘\n‘);//换行
 7     getchar();
 8 }
 9 void main(){
10     //printf("\\");//只有一个“\”会报错
11     //putchar(‘\\‘);
12     //printf("\"");
13     putchar(‘\‘‘);
14     getchar();
15 }

二、hello world的N种做法

 1 #include<stdio.h>
 2
 3 void hello1(){
 4     printf("hello world");
 5 }
 6 void hello2(){
 7     printf("A%sB","hello world");//hello world取代%s
 8 }
 9 void hello3(){
10     printf("%c%c%",‘h‘,‘e‘);
11 }
12 void hello4(){
13     putchar(‘h‘);
14     putchar(‘e‘);
15 }
16 void hello5(){
17     putchar(65);//ASCLL码
18     putchar(66);
19 }
20 void notepad(){//练习:用ascll码打印notepad
21     putchar(110);
22     putchar(111);
23     putchar(116);
24     putchar(101);
25     putchar(112);
26     putchar(97);
27     putchar(100);
28 }
29 void hello6(){//按照8进制输出helloworld
30     putchar(0150);//前面带0表示8进制
31     putchar(0145);
32     putchar(0154);
33     putchar(0154);
34 }
35 void hello7(){//按照16进制输出helloworld
36     putchar(0x68);//前面带0x表示16进制
37     putchar(0x65);
38     putchar(0x6c);
39     putchar(0x6c);
40 }
41 void hello8(){//按照8进制输出helloworld
42     putchar(‘\150‘);//8进制的150所标志的字符
43     putchar(‘\145‘);//        ‘\ddd‘,3位八进制代表的字符
44     putchar(‘\154‘);
45     putchar(‘\154‘);
46 }
47 void hello9(){//按照16进制输出helloworld
48     putchar(‘\x68‘);//        ‘\xhh‘,16进制数据转换成编号,查找字符
49     putchar(‘\x65‘);
50     putchar(‘\x6c‘);
51     putchar(‘\x6c‘);
52 }
53 void hello10(){
54     puts("hello world");
55 }
56
57 void main(){
58     hello10();
59     getchar();
60 }

三、打开程序的n种做法

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3
 4 void main(){
 5     //char str[50]="notepad";
 6     char str[50];
 7     //sprintf(str,"%s%s","note","pad");
 8     //sprintf(str,"%s","notepad");
 9     //sprintf(str,"%c%c%c%c",‘c‘,‘a‘,‘l‘,‘c‘);
10     //sprintf(str,"%c%c%c%c",99,97,108,99);
11     //sprintf(str,"%c%c%c%c",0143,0141,0154,0143);//8进制
12     //sprintf(str,"%c%c%c%c",0x63,0x61,0x6c,0x63);//16进制
13     //sprintf(str,"%c%c%c%c",‘\143‘,‘\141‘,‘\154‘,‘\143‘);//8进制
14     sprintf(str,"%c%c%c%c",‘\x63‘,‘\x61‘,‘\x6c‘,‘\x63‘);//16进制
15
16     printf(str);
17     system(str);//执行指令
18     system("pause");//暂停
19 }

四、通过内存地址改变变量的值

首先设置断点,进行调试

到达第一个断点时,打印出num变量的地址,根据地址查看到该地址存储的值为01

到达第二个断点,值变成了03

到达第三个断点,值变成了05,对其进行修改,将05改成59

16进制的59就等于10进制的89,最终打印出修改后的89,而非之前的5,这就是外挂改血量改蓝改攻击力的原理(找到需要修改数据的地址,然后对其进行修改)

五、加法改值

03改成09

六、打开多个程序

有的编译器一定要把变量的定义放在最前面,而不能随时定义char str[50];这条语句需要放在前面声明
时间: 2024-10-29 09:52:27

[c/c++] programming之路(3)、转义字符及内存的相关文章

[c/c++] programming之路(17)、高级指针

一.二级指针 二级指针的作用:1.函数改变外部变量指针2.外挂改变一个指针的值 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main(){ 5 int a = 10; 6 int b = 20; 7 int *p1 = &a; 8 int *p2 = &b; 9 int **pp = &p1; 10 printf("%d,", **pp); 11 printf("\n%x,

[c/c++] programming之路(16)、指针

一.调戏百度云管家 1 #include<stdlib.h> 2 #include<windows.h> 3 4 _declspec(dllexport) void go(){ 5 while(1){ 6 ShellExecuteA(0,"open","http://www.baidu.com",0,0,1); 7 MessageBoxA(0,"因为你的百度网盘存放了大量岛国大片","来自百度的邀请",

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

一.多维数组 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main(){ 5 int num[3][4]; 6 int i,j; 7 for (i = 0; i < 3; i++) 8 { 9 for (j = 0; j < 4; j++) 10 { 11 num[i][j]=4*i+j+1; 12 printf("%-3d",num[i][j]); 13 } 14 printf("\

[c/c++] programming之路(21)、字符串(二)

一.for /l %i in (1,1,5) do calc 等命令行参数 1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 5 void main() { 6 /*char str[] ="for /l %i in (1,1,5) do calc"; 7 char *p = "for /l %i in (1,1,5) do calc";*

[c/c++] programming之路(13)、函数

一.函数 1 #include<stdio.h> //stdio.stdlib标准库 2 #include<stdlib.h> 3 4 //代码重用, 函数的诞生,C语言主要是函数组成 5 //写C语言,就是写函数 6 //主要是代码重用,模块化(便于定位错误), 7 //函数就是对某一特定功能的抽象 8 void printfR(double R) 9 { 10 printf("体积=%f", 4 / 3 * 3.14*R*R*R); 11 printf(&q

[c/c++] programming之路(23)、字符串(四)——strncat,atoi,strcmp,strlen等,以及常用内存函数

一.strncat及自行封装实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //<string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. //<cstring>是C++版本的<string.h> //<string>定义了一个string的字符串类,包含

[c/c++] programming之路(2)、kill QQ,弹出系统对话框,吃内存等

一.删除文件 二.盗取密码的原理 1 #include<stdlib.h> 2 3 //杀掉QQ,然后提示网络故障,请重新登陆,弹出高仿界面,获取账号密码,然后打开QQ进行登录 4 void main(){ 5 system("taskkill /f /im QQ.exe"); 6 system("pause"); 7 system("D:\\QQ\\Bin\\QQScLauncher.exe"); 8 } 三.弹出系统对话框 1 #

[c/c++] programming之路(1)、编写程序打开记事本、计算器等

一.命令行启动程序 通过命令行关闭程序:taskkill /f /im 程序名.exe 二.打开记事本.计算器 1 #include <stdlib.h> 2 3 void main(){ 4 system("notepad");//打开记事本 5 system("pause"); 6 7 system("calc");//打开计算器 8 system("pause"); 9 } 三.并行打开程序 1 #inclu

[c/c++] programming之路(8)、汇编、求模、自增自减

一.插入汇编 1 #include<stdio.h> 2 3 void main(){ 4 int num=10; 5 num=num+5; 6 //插入汇编语言 7 _asm{ 8 mov eax,num;//eax是一个存储器,将num的值移动到eax 9 add eax,5 //eax值+5 10 mov num,eax //eax值赋给num 11 } 12 printf("%d",num); 13 getchar(); 14 } 二.求模运算,颠覆数 1 #inc