반응형

C언어 12

c언어 - stdout, stderr의 차이점

c언어 stdout, stderr의 차이점****리눅스 Centos6에서 실행한 c언어 코딩이므로 다를 수 있습니다**** stdout - 표준 출력 stderr - 표준 에러 둘 다 콘솔화면에 출력하기 때문에 출력부분에서는 큰 차이가 없습니다. 하지만 표준 출력과 표준에러에서 가장 큰 차이점은 버퍼링입니다. 표준 출력(stdout)은 줄 단위의 버퍼링을 하지만 표준 오류(stderr)는 버퍼링 없이 바로 출력됩니다. 즉, 표준출력은 한 줄을 완성해야하고 표준 오류의 경우 한 줄이 완성되지 않아도 출력이 가능합니다. 예를 들면 charstr1과 charstr2로 구성된 c파일에서 순서대로 출력이 됩니다. 주의 깊게 봐야할 부분은 printf문입니다. printf문의 경우 변환명세 부분의 \n(개행문자)이..

C & Docker & LINUX 2016.10.11

TCP - hello, world를 출력하는 소켓 프로그램

리눅스 Centos 6.5 환경 - 소켓 프로그램서버 프로그램 #include #include #include #define PORT 9000 char buffer[BUFSIZ] = "hello, world"; main(){int c_socket, s_socket; //소켓 생성 위한 변수(클라이언트 소켓, 서버 소켓)struct sockaddr_in s_addr, c_addr; //소켓의 주소 저장int len, n; s_socket = socket(PF_INET, SOCK_STREAM, 0);memset(&s_addr, 0, sizeof(s_addr));s_addr.sin_addr.s_addr = htonl(INADDR_ANY); //host 방식을 네트워크 방식으로 변경s_addr.sin_famil..

Network 2016.10.05

C언어 - 하노이탑

C언어 - 하노이탑 하노이 탑은 19세기말 유럽에서 유행되어 온 문제라고 합니다. 세 개의 막대가 서 있으며, 한 쪽에는 디스크가 크기순으로 쌓여있다. 이 한쪽 막대에 있는 디스크 모두를 그대로 다른 막대에 옮기는 문제입니다. 실제 문제는 64개인데 여기서는 디스크를 N개로 입력 받아 수행합니다. (64개 하나씩 움직임을 출력하면 프로그램이 안 끝납니다) 크기가 작은 디스크는 항상 큰 디스크 위에 있어야하는 규칙때문에 여러방향으로 디스크를 옮겨야합니다. 하노이탑은 재귀함수입니다. 자신이 자신을 참조하는 구조를 가지고 있습니다.

C & Docker & LINUX 2016.06.10

C언어 - 단순 연결 리스트

C언어 - 단순 연결 리스트 //단순 연결 리스트 예제 #include#include typedef struct list_node *list_pointer; // 연결리스트 구현을 위한 자기 참조 구조체struct list_node {int data;list_pointer link;}; void print_list(list_pointer ptr); //리스트를 출력하는 함수list_pointer create3(); //리스트의 노드를 만드는 함수int nodesum(list_pointer ptr); //리스트의 노드 값을 더하는 함수int nodenumber(list_pointer ptr); //리스트의 노드 숫자를 더하는 함수 void main(){list_pointer ptr;ptr = create3..

C & Docker & LINUX 2016.06.04

C언어 - 스택(stack) push, pop

C언어 - 스택(stack) push, pop ** C언어 스택에 대한 예제입니다. - push와 pop에 대해서 별도로 함수를 구현하여 만들었습니다. #include #define MAX_STACK_SIZE 10 typedef struct { //스택의 값을 저장할 구조체 선언 int key; char grade; }element; int top = -1; //전역변수 element stack[MAX_STACK_SIZE]; //전역변수 - 값을 저장할 배열 void push(element data); element pop(); main() { element data; int i, n, cond = 1; i = 0; while (cond) { printf("데이터 입력: "); scanf("%d %c",..

C & Docker & LINUX 2016.05.23

C언어 테트리스 3. 벽돌을 그리는 원리

C언어 테트리스 3. 벽돌을 그리는 원리 #include#include void ShowBlock(char blockInfo[][4]);//콘솔 출력 차에 블록을 그리는 역활void SetCurrentCursorPos(int x, int y);//전달 인자로 좌표값을 입력 받아서 커서의 위치 이동COORD GetCurrentCursorPos(void);//현재 커서 정보를 반환 char blockModel[][4][4] = {/*■ ■■■ *///char형 4개의 블록정보를 담고 있다. 회전시켰을 때 모양 표현{{0,0,0,0},{1,0,0,0},{1,1,1,0},{0,0,0,0} },{{ 0,1,0,0 },{ 0,1,0,0 },{ 1,1,0,0 },{ 0,0,0,0 } },{{ 0,0,0,0 },{ 1..

C & Docker & LINUX 2016.05.21

C언어 테트리스 2. 커서의 위치 정보 얻어오기

C언어 테트리스 2. 커서의 위치 정보 얻어오기 #include #include //getCursorPos.c int main(void) { CONSOLE_SCREEN_BUFFER_INFO curInfo; // 콘솔 출력창의 정보를 담기 위해서 정의한 구조체 GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &curInfo); //현재 커서의 위치 정보를 저장하는 함수 printf("[%d, %d] \n", curInfo.dwCursorPosition.X, curInfo.dwCursorPosition.Y); //구조체의 저장한 값을 출력한다 puts("First Hello World"); GetConsoleScreenBufferInfo(GetStd..

C & Docker & LINUX 2016.05.21

C언어 테트리스 1. 커서 위치의 이동

C언어 테트리스 1. 커서 위치의 이동 #include#include // 윈도우에서 제공하는 라이브러리 함수모음 //setCursorPos.cint main(void){COORD pos1 = { 0,2 }; // 좌표 정보를 담고 있는 구조체COORD pos2 = { 6,6 };COORD pos3 = { 15, 4 }; // 열쇠를 저장하는데 필요한 열쇠를 저장하는 자료형 HANDLEHANDLE hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); // 콘솔 출력 창의 열쇠SetConsoleCursorPosition(hConsoleOut, pos1); // pos1좌표로 이동하여 아래의 printf문을 실행시킨다printf("첫 번째 인사 : 안녕하세요."); getcha..

C & Docker & LINUX 2016.05.21

C언어 난수 출력 rand()함수 이용예제

C언어 난수 출력 rand()함수 이용예제 C언어 주사위 게임에서 많이 이용하는 함수가 rand()입니다. 랜드 함수를 이용하기 위해서는 헤더파일 stdlib.h가 필요합니다 rand()함수는 1-32767까지의 숫자를 랜덤하게 반환하는 함수입니다. ex. int a = rand() 이런식으로 사용을 하게 되죠 값을 더하기, 나머지 구하기, 곱하기 등으로 다양한 난수값을 출력이 가능합니다. rand()%100;100+rand()%100; 등등등 --- 난수를 출력하여 자연수와 소수 따로 더하기, 100~200사이의 난수 출력하기, 'a' ~ 'z'사이의 알파벳 출력하기 --- #include#include //include를 통해서 추가된 stdlib.h 헤더파일#include#define NUM 20 ..

C & Docker & LINUX 2016.05.16
반응형