?????????????????????????

?????????????????????????????????????????????????????????裺

??????1????“????”???????????????????н???????????????????

??????2???????Щ???????????ж??????????????????Щ???????Щ????????Щ???????????????????????????

??????3????????????????????????????????????????????????????????????к??????????????

????????????????????????????????????????п???????????????????????????Σ??????????????

???????磺?±??????Σ?????????????

 

?????? Σ?????
1 strncpy??recv??lstrncat??strncat??
2 fprintf??vsprintf??wscanf??lstrncpy
3 printf??sprintf??scanf??getchar??fget
4 strcat??strcpy??strlen

??????????Щ???????????????????±??

 

 

???? buffer strncat printf sprintf scanf normal strncpy
???? strcat??strcpy strncat??lstrncat printf??fprintf sprintf??vsprintf scanf??wscanf strlen??recv??getchar??fget strncpy??lstrncpy

 

???????????????????崦???

??????1??????buffer??????????

?????????????????Σ???????????????????????????????????????????Σ????????????????????????????????????token??????????????????

??????????strcpy(dest??”abc”);  //????????abc?????????

??????2??????strncat??????????

????????????????????????Σ?????????(???1)??????????????strncat(dest??src??len)???len????????????????????????????????????????????????????????????????????????????????????”sizeof(dest)”?????????Σ????檔?????????dest??????????????????sizeof(dest)??Σ?????????????????????????ЩΣ??????????ж????????????

??????????strncat(dest??src??sizeof(dest)-1);//Σ?????

??????3??????printf??????

??????????????printf??????????????????????????Σ?????????????????????????????Σ???????????????????vsnprintf?????????????????????

??????4??????scanf??????

??????scanf(format??addr)?????format????????????????????????????????format?漲??????s%????????й漲?????????????????????????????????ж????Σ??????????format?漲?????5s%?????????漲?????????????????Σ?????????????????ж????Σ???????Σ???

?????????scanf(“%s”??str);//Σ?????й漲??????????

????scanf(“%5s”??str);//str?????????5??Σ?????