Programming Language78 데이터 저장타입 1. list() >>> data = ['a', 'b'] >>> data = list('ab') 위 2가지 방식으로 초기화 (1) offset으로 값을 얻어올 수 있다. >>> print data[1] b (2) .append는 가장 마지막 인덱스 다음에 데이터를 추가 >>> data.append('c') >>> print data ['a', 'b', 'c'] (3) .insert는 원하는 인덱스에 데이터를 추가, 나머지 데이터는 뒤로 한 칸씩 이동 >>> data.insert(1, 'c') >>> print data ['a', 'c', 'b'] (4) del [리스트이름[인덱스]] 는 해당 인덱스 데이터 삭제, -1은 뒤에서 첫 번째, 즉 맨 뒤 데이터를 의미 >>> del data[-1] >>> pr.. 2018. 5. 22. 공유메모리 dump shmget 함수의 원형 int shmget(key_t key, size_t size, int shmflg); key_t key : 공유메모리의 키 값, 정수로 입력 가능, IPC_PRIVATE로 인자를 가지면 개인공유메모리 생성가능 size_t size : 생성하려는 공유메모리 크기 int shmflg : 공유메모리의 flg값으로 공유메모리의 권한, 생성 시 옵션 부여. shmat 함수의 원형 void* shmat(int smId, const void* shm_addr, int flag); int smId : 공유메모리 식별자 const void* shm_addr : 공유메모리와 연결하고자 하는 프로세스 내부의 메모리 int flag : 속성설정 가상메모리와 물리메모리 영역을 연결해주는 함수. memc.. 2018. 5. 20. scrncmp strncmp 함수의 원형 #include int strncmp ( const char * str1, const char * str2, size_t num ); strncmp 함수 = 두 문자열의 일부분만 비교하는 함수 = 일치할 경우 0을 반환 예제소스 #include int main() { char* str[8] = { "banana", "baby", "always" }; for (int i = 0; i < 3; i++) { if (strncmp(str[i], "baxx", 2) == 0) { printf("%s \n", str[i]); } } return 0; } 2018. 5. 19. strcpy(), strcat() - abc.c - int main (int args, char** argv[]) { char cmd[100]; strcpy( cmd, "dig @" ); strcat( cmd, argv[1] ); strcat( cmd, " version.bind chaos txt"); system( cmd ); return 0; } $ abc.exe "127.0.0.1; /bin/sh; " ; DiG 9.2.1 @127.0.0.1 cmd[100] = "dig @127.0.0.1 version.bind chaos txt\0" ; = 한 줄에 여러개의 명령어 실행 127.0.0.1을 적고 추가적으로 /bin/sh 실행 abc.exe의 실행권한이 +4000 일 경우 권한탈취 가능 2018. 5. 13. int main(int argc, char *argv[]) dir /? = 입력 시 dir 명령에 대한 도움말이 출력. = 이때 "/?" 라는 문자열이 옵션. int main(int argc, char* argv[]) 함수를 보면 argc = 프로그램을 실행할 때 지정해 준 "명령행 옵션"의 "개수"가 저장되는 공간 argv = 프로그램을 실행할 때 지정해 준 "명령행 옵션의 문자열들"이 실제로 저장되는 배열 - abc.c - #include #include // exit() int main(int argc, char* argv[]) { // 옵션 지정하지 않았을 때 에러 출력하고 종료 if (argc == 1) { fputs("옵션을 입력하지 않았습니다. \n", stderr); exit(1); } // 옵션 개수 출력 printf("%d 개의 옵션을 입력하였.. 2018. 5. 13. call by reference #include int main() { int x = 7; int y = 5; int k = 0; int i; int my[5] = { 1, 2, 3, 4, 5 }; test(my); //배열은 이름을 보내면 주소가 전달된다. for (i = 0; i %d \n", i, my[i]); } test1(x, &y); //주소를 보내고 printf("%d , %d \n", x, y); return 0; } void test(int data[]) { for (int i = 0; i < 5; i++) { data[i] = data[i] * 2; } } void test1(int a, int *p) { //포인터타입으로 받는다. a = a + 5; *p = *p + 5.. 2018. 3. 28. 이전 1 ··· 4 5 6 7 다음