一、转义字符
1 #include<stdio.h>
2
3 void main(){
4 printf("hello nworlda");// 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];这条语句需要放在前面声明
原文链接: https://www.cnblogs.com/little-monkey/p/7191325.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/256889
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!