본문 바로가기

분류 전체보기479

[c언어콘서트] 12장 7번 (파일 저장) [12장 7번] 사용자가 입력하는 텍스트를 파일에 저장하여 주는 프로그램을 작성해보자. 사용자가 공백 문자열을 입력하면 종료하는 것으로 한다.공백문자 : ctrl+z [풀이]#include #include int main() { FILE *fp; char name[20]; char buffer[200]; int ret; printf("파일 이름을 입력하시오 : "); scanf("%s", name); getchar(); fp = fopen(name, "w"); if (fp == NULL) exit(0); while (1) { ret = gets(buffer); if (ret == 0) break; fprintf(fp, "%s\n", buffer); }; fclose(fp); return 0; } 2018. 11. 21.
[c언어콘서트] 12장 6번 (파일 출력) [12장 6번] 텍스트 파일의 내용을 읽어서 그대로 화면에 출력하여 주는 프로그램을 작성해보자. 각 문장 앞에는 번호를 붙인다. [풀이]#include #include int main() { FILE *fp; char file[100]; char buffer[1000]; int line_cnt = 1; printf("파일 이름을 입력하시오: "); scanf("%s", file); fp = fopen(file, "r"); if (fp == NULL) exit(1); while (1) { char *p = fgets(buffer, 1000, fp); if (p == NULL) break; printf("%d %s", line_cnt, p); line_cnt++; } fclose(fp); printf("\n.. 2018. 11. 21.
[c언어콘서트] 12장 5번 (파일 비교) [12장 5번] 두 개의 텍스트 파일을 비교하여 같은지, 다른지를 알려주는 프로그램을 작성하라. [programming_5(1).txt] [programming_5(2).txt] [풀이]#include #include int main() { FILE *fp1, *fp2; char file1[100], file2[100]; printf("첫번째 파일 이름: "); scanf("%s", file1); printf("두번째 파일 이름: "); scanf("%s", file2); fp1 = fopen(file1, "r"); if (fp1 == NULL) exit(1); fp2 = fopen(file2, "r"); if (fp2 == NULL) exit(1); while (1) { int c1 = fgetc(fp.. 2018. 11. 21.
[c언어콘서트] 12장 4번 (파일 크기 비교) [12장 4번] 임의의 실수 100개를 생성시킨 후에 텍스트 파일과 이진 파일로 저장하여 보고 그 크기를 비교하여 보라. [만들어진 파일]- w(텍스트파일) wb(이진 파일) [풀이]#include #include int main() { FILE *fp1 = NULL; FILE *fp2 = NULL; int value, i; fp1 = fopen("programming_4(w).txt", "w"); if (fp1 == NULL) exit(1); fp2 = fopen("programming_4(wb).txt", "wb"); if (fp2 == NULL) exit(1); for (i = 0; i < 100; i++) { value = rand(); fprintf(fp1, "%d ", value); fwrit.. 2018. 11. 21.
[c언어콘서트] 12장 3번 (라인개수 출력) [12장 3번] 텍스트 파일 안에 들어 있는 라인의 개수를 계산하는 프로그램을 작성해보자. [programming_3.txt] [풀이]#include int main() { FILE *fp; fp = fopen("programming_3.txt", "r"); char tmp; int cnt = 1; if (fp == NULL) { exit(0); } while (fscanf(fp, "%c", &tmp) != EOF) { printf("%c", tmp); if (tmp == '\n') cnt++; } printf("\n\n라인의 개수=%d\n", cnt); return 0; } 2018. 11. 16.
[c언어콘서트] 12장 2번 (정수 출력) [12장 2번] 정수들이 저장된 파일에서 모든 정수를 읽어서 정수의 개수, 합계, 평균을 출력하는 프로그램을 작성하라. [programming_2.txt] [풀이]#include int main() { FILE *fp; fp = fopen("programming_2.txt", "r"); int sum = 0; int cnt = 0; int num; double average; if (fp == NULL) { exit(0); } while (fscanf(fp, "%d", &num) != EOF) { sum += num; cnt++; } average = sum / cnt; printf("정수들의 개수 : %d\n", cnt); printf("정수들의 합계 : %d\n", sum); printf("정수들의 .. 2018. 11. 16.
[c언어콘서트] 12장 1번 (파일 저장) [12장 1번] 사용자로부터 직원에 대한 정보를 받아서 employee.txt 파일에 저장하는 프로그램을 작성해보자. [employee.txt] [풀이]#include int main() { FILE *fp; fp = fopen("programming_1.txt", "w"); char name[20]; int age, wage; if (fp == NULL) { exit(0); } printf("직원 이름 : "); scanf("%s", name); fprintf(fp, "직원 이름 : %s\n", name); printf("나이 : "); scanf("%d", &age); fprintf(fp, "나이 : %d\n", age); printf("월급 : "); scanf("%d", &wage); fprint.. 2018. 11. 16.
[c언어콘서트] 11장 6번 (가위,바위,보) [11장 6번] 열거형을 사용하여 사람과 컴퓨터 사이의 가위, 바위, 보 게임을 구현해보자. [풀이]#include enum COM {s, r, p}; int main() { enum COM com = 0; int user; printf("가위(0), 바위(1), 보(2)를 입력하세요 : "); scanf("%d", &user); if (com == user) printf("비겼습니다. \n"); else if (com > (user + 1) % 3) printf("컴퓨터가 졌습니다. \n"); else printf("컴퓨터가 이겼습니다. \n"); return 0; } 2018. 11. 16.
[c언어콘서트] 11장 5번 (복소수의 덧셈) [11장 5번] 두 개의 복소수를 더하는 프로그램을 작성해보자. a+bi와 c+di의 덧셈은 다음과 같다.(a+bi)+(c+di)=(a+b)+(c+d)i복소수는 구조체를 사용하여 표현해보자. [풀이]#include struct NUM { double integer; double complex_num; }; int main() { struct NUM num[2]; printf("첫번째 복소수를 입력하시오 (a, b) : "); scanf("%lf %lf", &num[0].integer, &num[0].complex_num); printf("두번째 복소수를 입력하시오 (a, b) : "); scanf("%lf %lf", &num[1].integer, &num[1].complex_num); printf("%0.. 2018. 11. 16.
[c언어콘서트] 11장 4번 (학생 입력) [11장 4번] 학생을 나타내는 구조체 student는 주민등록버호(정수), 이름(문자열), 전화번호(문자열), 로 구성된다. 구조체 안에서 공용체를 사용하여 주민등록번호 또는 학번 중에서 하나를 사용할 수 있도록 구조체를 정의해보자, [풀이]#include struct STUDENT { union number { int per_num; // 생년월일 int stu_num; // 학번 }; char name[20]; // 이름 char phone[20]; // 전화번호 }; int main() { struct STUDENT student[2] = { {0, "홍길동1", "010-0000-0000"}, {0, "홍길동2", "010-1111-1111"} }; student[0].stu_num = 2018.. 2018. 11. 16.
[네트워크] 브로드캐스트(Broadcast) [브로드캐스트(Broadcast)] 브로드캐스트(Broadcast)- 1 대 전체- 로컬 랜 상에 붙어있는(브로드캐스트 도메인 안에 있는) 모든 네트워크 장비들에게 보내는 통신이다.- 예를 들어 동네 이장님이 마이크로 "동네 사람들! 반상회가 있으니 모이세요!" 라고 동네에 방송한 방식과 같다.- 여기서 동네(방송을 듣는 영역)는 브로드캐스트 도메인과 같다.- 브로드캐스트의 주소는 FFFF.FFFFF.FFFF(맥 어드레스일 경우)이다.- 이 주소로 패킷을 CPU가 받으면 무조건 읽어들인다. _ (원래는 자신의 맥 어드레스와 목적지 맥 어드레스가 다르면 버림)- 브로드캐스트는 네트워크 상의 전체 노드로 전송되기 때문에 전체 트래픽이 증가.- 이 패킷을 받은 CPU는 이 패킷을 처리하게 되고 PC의 성능도 .. 2018. 11. 14.
[알쓸신잡] 무료 아이콘 사이트 주소 모음 [무료 아이콘 주소 모음] 1. flaticon https://www.flaticon.com/ 2. iconmonstr https://iconmonstr.com/ 3. iconfinder https://www.iconfinder.com/ 4. icoooon_mono http://icooon-mono.com/ 2018. 11. 11.
[네트워크] 유니캐스트(Unicast) [유니캐스트(Unicast)] 유니캐스트(Unicast)- 1 대 1 통신- 가장 많이 사용되는 트래픽- 즉, 받는 사람의 주소와 보내는 사람 주소를 적은뒤 우체통에 넣는 방식- 그러면 모든 pc들이 이 프레임을 받아들여서 받는 사람이 자신인지 비교(맥 어드레스가 같은지 비교)- 자신의 멕 어드레스와 목적지의 맥 어드레스가 다르면 버린다. (읽지 않는다) 즉, PC의 CPU에는 영향을 주지 않는다.- 자신의 맥 어드레스와 목적지의 맥 어드레스가 같으면 읽는다. 즉, PC의 CPU가 처리를 하게 된다.- 유니캐스트는 목적지 주소가 아닌 다른 PC들의 CPU 성능을 저하 시키지 않는다. 브로드캐스트(Broadcast)란?멀티캐스트(Multicast)란? 2018. 11. 11.
[Pwnable] Fake EBP 정리 [Fake EBP] ebp를 속이는 기법으로 sfp를 조작 가능하고, ret의 값을 leave / ret 가젯의 주소로 변경이 가능할 때 이용한다.즉, ebp를 속이고 leave / ret를 한번더 실행시키는 기법 이 기법의 핵심은 함수의 에필로그 부분을 이용하는 것이다 leavemov esp, ebppop ebp retpop eipjmp eip 원리1. (leave) mov esp, ebp 를 통해서 esp를 ebp로 이동시킨다.2. (leave) pop ebp 를 통해 변조된 ebp를 꺼낸다.3. (ret) pop eip 를 통해 eip는 leave / ret 를 가리킨다. 즉, ret에 leave / ret 가젯이 들어있어야한다.4. (ret) jmp eip 를 통해 leave / ret 가 한번더.. 2018. 11. 6.
[python] PyCharm 모듈 설치방법 [PyCharm 모듈 설치] 1. FIle의 Settings에 들어간다. 2. Project: python에 있는 Project Interperter에 들어간뒤 + 버튼을 누른다. 3. 원하는 모듈을 검색한뒤 Install Package를 누른다. 4. 모듈을 사용하면 된다. 2018. 11. 3.