테스트 용 프로그램을 만드는데..
char buf[600];
라는 변수인데..
이 변수에..
\"abd\"
\"kkkkkkk\"
\"9000901\"
이런 값을 넣고..
소켓으로 데이터를 날리라고 했더니만..
strncpy(buf, \"앞에 공백 597개 넣음)abd \",600);
이런식으로 프로그램을 짜더라고..
sprintf(buf, \"%- 600s\",\"600\");
을 쓰면 되는데.. 말이야..
더 웃긴건... ㅋㅋㅋㅋ
그게 나였음.. ㅠ.ㅠ
아.. C는 역시.. 몇달만 안해도.. .ㅠ.ㅠ
char buf[600];
라는 변수인데..
이 변수에..
\"abd\"
\"kkkkkkk\"
\"9000901\"
이런 값을 넣고..
소켓으로 데이터를 날리라고 했더니만..
strncpy(buf, \"앞에 공백 597개 넣음)abd \",600);
이런식으로 프로그램을 짜더라고..
sprintf(buf, \"%- 600s\",\"600\");
을 쓰면 되는데.. 말이야..
더 웃긴건... ㅋㅋㅋㅋ
그게 나였음.. ㅠ.ㅠ
아.. C는 역시.. 몇달만 안해도.. .ㅠ.ㅠ
sprintf 보다 strncpy가 훨씬 낫다. snprintf보다는 못하지만
덕분에 나도 공부함 ㅋㅋㅋㅋ
대단한 반전...............
다시 말하지만 어떤 넘인지 sprintf를 자랑스럽게 알려준 놈은 메모리 침범에 대한 경험이 없거나 자신있는 모양이지만 그렇다 하더라도 sprintf나 strcpy 같은 건 쓰지 않는게 좋다. snprintf, strncpy 등을 이용하도록. MS에서도 권고하는 사항임.
크리너횽아 // strncpy 로 공백을 강제적으로 넣을 수 있어? 난 몰라서.. sprintf 를 사용함.. (나도 sprintf 보단 strncpy 를 많이 사용함)
길이는 600 고정이고... 실제로 들어가야 되는 문자는.. 10자 내외 인 문자열을 한 100개쯤 만들어야 함. 방법 좀.. ㅠ.ㅠ
strncat을 이용해서 반복문을 돌리면 공백은 간단하게 넣을 수 있을 텐데? 젤 편한건 snprintf다.
대세는 swprintf_s
프리포스트픽스 남발
프로토콜이 왜 이러삼?
간만에 제가 아는거 나왔다는....
$ perl -e \'print \"a\"x600\' | nc host port