본문 바로가기

컴퓨터/언어,프로그래밍

문자열 연산자 - strcpy, strncpy, strlen, strcat, strncat, strcmp, strncmp, strchar, strstr, atoi, atof, atol, strftime strcpy 이 함수는 특정 문자열에서 NULL 문자를 인식할때까지의 모든 데이터를 다른 곳으로 복사한다. char * strcpy(char * strDestination, const char * strSource); // NULL 문자를 만나기 전까지 strSource에서 strDestination로 복사한다. ex> char string[5] = {0}; strcpy(string, "1234567890"); //컴파일은 정상으로 되나 실재 사용에서 에러가 날수있다. 그 이유는 overflow가 일어나기 때문으로 복사시 해당배열을 넘어도 메모리상의 배열과 붙어있는 영역에 복사를 한다. 이때 다른영역을 건드리기때문에 그 영역을 사용하지 않는다면 문제가 일어나지 않겠지만 그영역을 사용한다면 에러를 발생시킨.. 더보기
strlen, strcpy, strcat, strcmp 함수 구현 [소스] #include long strlen(const char *str) { const char *s; for (s = str; *s; ++s); return(s - str); } char *strcpy(char *to, const char *from) { char *save = to; for (; (*to = *from) != 0; ++from, ++to); return(save); } char *strcat(char *s, const char *append) { char *save = s; for (; *s; ++s); while ((*s++ = *append++) != 0); return(save); } int strcmp(const char *s1, const char *s2) { while (*s1 .. 더보기
malloc 메모리 할당 및 해제 / 재 할당 출처 : winapi.co.kr void *malloc(size_t size ); void free(void *memblock ); 먼저 malloc(엠얼록이라고 읽는다) 함수부터 알아보자. 인수로 필요한 메모리양을 바이트 단위로 전달하면 요청한만큼 할당한다. size_t는 메모리의 양을 나타내는 단위인데 _t로 끝나는 사용자 정의 타입은 표준에 의해 반드시 정의하도록 되어 있으므로 기본 타입과 거의 대등한 자격을 가진다. 플랫폼에 따라 다르게 정의되어 있는데 대부분의 32비트 컴파일러들은 size_t를 unsigned의 부호없는 정수형으로 정의한다. 따라서 이 함수로 할당할 수 있는 이론적 최대 용량은 4G 바이트라고 할 수 있다. 10바이트가 필요하면 malloc(10)이라고 호출하고 1000바이트가.. 더보기
배열 stack / 단순연결리스트 stack /***********************************************/ // ex. 1 배열스택 /***********************************************/ #include #include #define STACK_SIZE 5 int stack[STACK_SIZE]; int top; // stack공간에 값이 저장되어 있는 최상단의 위치값 int getnum(void); void init_stack(void); void push(int data); int pop(void); void print_stack(void); void all_data_delete(void); void main(void) { int menu, num; // stack 초기화 init_s.. 더보기
C언어 :: 링크드 리스트 5. 링크드 리스트: 링크드 리스트(linked list)는 C에서 쉽게 구현할 수 있는 유용한 데이터 저장방법이다. 왜 포인터에 대한 주제를 다루면서 링크드 리스트를 언급하는 것일까? 잠시 후에 배울 것처럼 포인터는 링크드 리스트의 핵심이다.단순 링크드 리스트, 이중 링크드 리스트, 이진 트리를 포함하여 많은 종류의 링크드 리스트가 있다. 각각의 형태는 데이터를 저장할 필요가 있는 특별한 경우에 적절히 사용된다. 이런 링크드 리스트에서 공통적인 사항은 데이터 항목 간의 결합이 데이터 항목 자체 내에 포함되어 있는 정보에 의해 포인터의 형식으로 정의된다는 것이다. 이런 사실은 데이터 항목 간의 결합이 배열의 배치와 저장을 기반으로 하는 배열과 링크드 리스트를 분명히 구분하는 기준이다. 이 단원에서는 가장.. 더보기
[C언어] 링크드리스트를 이용한 stacklist view plaincopy to clipboardprint? #include #include typedef int element; typedef struct stackNode { element data; //해당 노드의 값을 가지고 있는 int형 data변수 struct stackNode* link; // 이전 노드의 주소값을 가지고 있게 될 구조체 포인터 변수 }stackNode; stackNode* top; // 최상위 값을 가지게 되는 포인터 구조체 변수 stackNode* cur; // 현재 위치값을 가지게 될 포인터 구조체 변수 stackNode* curprev; // 현재 위치값의 이전값을 가지게 될 구조체 변수 int flag = 0; void push(element num) { stackN.. 더보기
[C언어] bit 연산 , 비트 연산 bit를 연산하는 법에서 알아봅시다. 제 설명이 많이 부족합니다. 처음 부분만 이해하셧다면 쉽게 bit연산을 할수 있습니다. 하지만 저의 설명에 처음 부분은 존재하지 않는 것 같내요 ㅠ bit는 컴퓨터가 사용하는 숫자로 2진수 0과 1로 나타 내는 것 입니다. 프로그램밍에서의 표현은 변수숫자를 넣을 때 0x를 써주어 16진수로써 사용합니다. 16 진수 = 0 1 2 3 4 5 6 7 8 9 A B C D E F ex ) 0xffffffff = 1111 1111 1111 1111 1111 1111 1111 1111 0x0000000e = 0000 0000 0000 0000 0000 0000 0000 1110 1. and연산자 '&' '&' 연산자는 다음과 같은 실행을 한다. x y x & y 1 0 0 0.. 더보기
링크드 리스트에 정확한 개념 링크드 리스트를 많이 들어봤는데 정확한 개념을 모르겠습니다. 삼국지 게임에서요 도시들이 각각 분포 되 있잖아여... 지도가 대략 영창 천수 북평 진양 이렇게 있으면요... 진양에서 천수로 가는길은 진양 => 북평 => 영창 => 천수인데요.. 여기서 진양에서 바로 천수로 못가게 만드는것이 링크드 리스트인가요? 그러니깐 인접 리스트말이죠? 인접한곳만 거쳐서 간다.. 이 개념이 링크드 리스트인가요? 링크드 리스트와 유사하면서 비교되는 개념이 배열이랍니다. 일딴 배열이 무엇 인지는 아시겠죠. 배열은 같은 자료형을 여러개 사용할때 유용하게 쓸수 있겠죠. 그러나 그 같은 자료형들이 몇개가 생길지 예상을 못하거나 너무 가변적일때가 있잖아요. 예를 들어 학생 데이터를 배열로 잡았을 경우, 학생이 30명 정도인데 적어.. 더보기