본문 바로가기
728x90
반응형

프로그래밍/C, C++12

HTTP File Upload using C/C++ 보호되어 있는 글 입니다. 2021. 7. 16.
padding 다음과 같은 구조체와 그 사이즈를 출력하는 코드가 있다. 12345678910111213141516171819#include typedef struct test { char a; char b; int c;} test; int main(){ test tmp = { 0, }; tmp.a = '1'; tmp.b = '2'; tmp.c = 3; printf("%d\n", sizeof(tmp)); return 0;}cs char 변수 x2, int 변수 x1이지만 구조체의 사이즈는 6이 아니라 8이다. 하.. 이거 대학교 저학년 때 분명 숙지하고 있던건데 좀처럼 신경 안 쓰니 패딩의 개념을 까먹었다. OS 별로, 혹은 프로그래머의 설정별로 다르지만 메모리 할당에는 패딩이라는 개념이 있다. tmp 구조체가 할당된 .. 2018. 10. 17.
C++에서 띄어쓰기 포함 한 줄 그대로 받기 123456789#include #include int main(){ std::string s; std::getline(std::cin, s); std::cout 2018. 10. 14.
Visual Studio 64bit inline asm 64비트 Visual Studio에서 인라인 어셈 지원을 안 한다.. __asm { } 이걸 써서 상당히 편한 경우가 가끔 있는데 참 아쉬울 따름이다. 그래서 이런저런 조사를 해봤는데, 방법은 크게 두 가지 있는 것 같다. . 첫 째, .asm 파일을 따로 생성하고 거기에 어셈 코드를 작성한 뒤에 불러오기. 근데 이건 작성한 어셈 코드를 call 형태로 불러야하기 때문에 음.. 뭔가 적용하기 어려움. . 둘 째, Intrinsics List 사용하기. 어차피 어셈으로 복잡한 코드를 구현할 것이 아니라면 이게 상당히 좋다. x86 Intrinsics List ( link ) x64 Intrinsics List ( link ) 보시다시피 어셈 명령어 하나하나를 함수 형태로 구현해놨다. 이걸 이용해 컴파일하고.. 2018. 8. 23.
VirtualAllocEx Error 487 ERROR_INVALID_ADDRESS487 (0x1E7)Attempt to access invalid address. VirtualAllocEx() API를 이용하여 "임의"의 주소에 메모리를 할당하고 하는데 487 에러가 발생하였다. 디버깅을 통해 여러 가지 실험을 해보았는데 결과는 아래와 같다. 두 번째 인자로 지정한 주소에 메모리를 할당할 수 있는데, 지정한 주소가 이미 "예약"되어 있거나 이미 "할당"되어 있으면 487 에러가 발생함 2018. 1. 25.
openssl socket C/C++ example 옛날에 안드로이드 JNI 공부할 때도 사용했던 소스코드이다. Windows에서는 unistd.h나 sys/socket.h 등의 헤더 파일을 사용할 수 없어서 이 헤더 파일을 대체해서 winsock2.h 등의 헤더 파일을 사용해야 한다. Windows용 코드는 MSDN 코드를 참고하였다. 출처 : https://www.cs.utah.edu/~swalton/listings/articles/ssl_server.chttps://www.cs.utah.edu/~swalton/listings/articles/ssl_client.c https://msdn.microsoft.com/en-us/library/windows/desktop/ms737591(v=vs.85).aspxhttps://msdn.microsoft.com.. 2017. 10. 31.
유닉스 crypt 함수 1234567891011#include #include int main(){ char key[20]="sample text"; char salt[] = "test"; printf("%s\n", crypt(key, salt)); return 0;}Colored by Color Scriptercs 2017. 5. 29.
printf 덮어 쓰기 게임 등에서 패치할 때 보면 몇 퍼센트 남았다고 나오는 경우가 있는데, 이를 콘솔에서 구현하고자 할 때 대부분 생각하는건 system("cls");printf("%d 남았음", now); 와 같은 코드이다. 근데 system 함수를 쓰지 않고도 간편하게 출력 결과를 덮어쓸 수 있다. 전에 페이스북 페이지 '코무합니다만' 이였나? 거기에 질문으로 올라와서 한 번 본 기억이 있는데 까먹어서 검색 좀 했다. printf("[-] Send Artifact... [%d/%d]\r", i * PGSIZE, dwFileSize); \r을 쓰면 된다! \r 을 기억하자. \r 출처 : http://stackoverflow.com/questions/15192441/update-printf-value-on-same-lin.. 2016. 11. 9.
연산자 오버라이딩, sort, 생성자 12345678910111213141516171819202122232425#include#includestruct block{ int n, a, h, w; block(){} block(int n, int a, int h, int w) :n(n), a(a), h(h), w(w) {} bool operator 2015. 6. 7.
c++ 연산자 오버로딩 Colored By Color Scripter™12345678910111213141516171819202122#includeusing namespace std;class test{public: int a, b; test(int a, int b) :a(a), b(b) {} void show(){ cout 2014. 10. 29.
C++ mysql 연동 http://dev.mysql.com/downloads/connector/cpp/http://dev.mysql.com/downloads/connector/c/(위 링크는 mysql 커넥터 다운로드) #pragma comment(lib,"libmysql.lib") 프로젝트 속성 -> 구속 속성 -> VC++ 디렉터리 포함 디렉터리에 include 폴더 포함시키고 라이브러리 디렉터리에 lib 폴더 포함함. 한글 안 되면 아래 세 줄 복붙.mysql_query(connection,"set session character_set_connection=euckr;");mysql_query(connection,"set session character_set_results=euckr;"); mysql_query(con.. 2014. 9. 23.
IP 주소 정수 변환(IP to INT, INT to IP) Colored By Color Scripter™1234567891011121314151617181920#include#include#include#includelong long IPtoINT(char *IP_ADDR){ long long ret = 0; char *oct; for (int i = 3; i>=0;i--){ oct = strtok(IP_ADDR, "."); ret += pow(256., i) * atoi(oct); IP_ADDR = NULL; } return ret;}int main(){ char ip_addr[24]; scanf("%s", &ip_addr); printf("%lld",IPtoINT(ip_addr)); return 0;} 58.184.70.1 이란 IP 주소가 있으면 58 *.. 2014. 7. 3.
728x90
반응형