????12??C???????????漰???????????????塢????????棬??????????????????
????1.gets()????
??????????????????????????
????#include<stdio.h>
????int main(void)
????{
????char buff[10];
????memset(buff??0??sizeof(buff));
????gets(buff);
????printf(" The buffer entered is[%s] "??buff);
????return 0;
????}
???????????????????????????gets()???????????????stdin?????????????????????????????????????????????????????????????????????fgets()???檔
????2.strcpy()????
???????????????????????????????????????????????????????????
????#include<stdio.h>
????int main(int argc??char*argv[])
????{
????int flag=0;
????char passwd[10];
????memset(passwd??0??sizeof(passwd));
????strcpy(passwd??argv[1]);
????if(0==strcmp("LinuxGeek"??passwd))
????{
????flag=1;
????}
????if(flag)
????{
????printf(" Password cracked ");
????}
????else
????{
????printf(" Incorrect passwd ");
????}
????return 0;
????}
???????????????????????????ù???strcpy()??????????????????????“passwd”????????????????????????????“passwd”????????????????????????????????????????????????д“flag”??????????????λ????????“????”???????????????????????flag???λ?????????????????????????????????磺
????$./psswd aaaaaaaaaaaaa
????Password cracked
????????????????????????????????????????????????????????????
??????????????????????????strncpy()??????
?????????????????????????????????????????????????????洢??????????????????????gcc?????????????????????ò???????????‘-fno-stack-protector’???????????????
????3.main()?????????
???????????????????????????????????????????????
????#include<stdio.h>
????void main(void)
????{
????char*ptr=(char*)malloc(10);
????if(NULL==ptr)
????{
????printf(" Malloc failed ");
????return;
????}
????else
????{
????//Do some processing
????free(ptr);
????}
????return;
????}
?????????main()????????????????δ?????????????????????????????檔main()??????????????“int”??????“void”?????“int”??????????ó??????????????????????????????????????????????е?????????????????
????4.???й?
?????????????????????й???
????#include<stdio.h>
????void main(void)
????{
????char*ptr=(char*)malloc(10);
????if(NULL==ptr)
????{
????printf(" Malloc failed ");
????return;
????}
????else
????{
????//Do some processing
????}
????return;
????}
????????????????????????????“ptr”????棬???????????????????????й??????????????????????????????涼???????????????????????????????“while???”?У????????????????й?????
?????????????????????????????й??????????й???????????????????????Valgrind????????
????5.free()????
?????????????????????????’freeze’????????????’zebra’?????????
????#include<stdio.h>
????int main(int argc??char*argv[])
????{
????char*ptr=(char*)malloc(10);
????if(NULL==ptr)
????{
????printf(" Malloc failed ");
????return-1;
????}
????else if(argc==1)
????{
????printf(" Usage ");
????}
????else
????{
????memset(ptr??0??10);
????strncpy(ptr??argv[1]??9);
????while(*ptr!='z')
????{
????if(*ptr=='')
????break;
????else
????ptr++;
????}
????if(*ptr=='z')
????{
????printf(" String contains'z' ");
????//Do some more processing
????}
????free(ptr);
????}
????return 0;
????}
????????????????????????????????“ptr”?????while?????“ptr”?洢????????????“zebra”???while????????????????????????free()??????????malloc()??????????“freeze”???“ptr”?洢????????while??????????????′???free()????????????????seg-fault?????????