본문 바로가기

C Programming

(23)
fgets()함수 이용시 엔터를 빼주는 방법 fgets()함수는 파일의 한줄을 읽어들이는데 개행문자까지도 읽어들여서 출력시 자동 개행이 되는 경우가 있다. 이러한 점을 해결하기 위해 //< 개행문자 빼주기 void delete_NULL( char* str ) { int i = 0; //< 끝까지 돌기 while( *( str + i ) != 0 ) { //< 개행문자가 있다면~ if( *( str + i ) == '\n' ) { //< 0으로 바꿔주기 *( str + i ) = 0; } i++; } }
헤더파일 중복 include 피하기(#ifndef vs #pragma once) 출처 : http://meetkei.com/wordpress/?p=30헤더파일에는 일반적으로 클래스선언, 매크로 상수, 구조체 선언 등의 내용이 포함되어 있고 소스 작성시에 이 헤더파일을 필요로 하는 여러개의 파일에 #include 지시자를 통해 포함되게 된다. 단 하나의 파일에서만 포함된다면 큰 문제는 없지만, 여러개의 파일에 포함될 경우 중복정의 문제가 발생하게 된다. 예를 들어 클래스는 단 하나의 선언만을 가져야 하는데, 헤더파일이 여러 파일에 포함될 경우 포함된 횟수만큼 중복정의 되는 문제가 발생하여 컴파일을 할 수 없게 된다. 이 문제를 해결하기 위해서 많이 사용하는 방법이 #ifndef와 #define 지시자를 사용하여 중복을 체크하는 것이다.userClass.h#ifndef _USERCLAS..
전처리문 전처리문실질적인 컴파일 이전에 미리 처리되는 문장을 가리킨다. 선행처리기라고도 한다. 따라서 컴파일러는 사용자가 작성한 코드를 컴파일하기 전에 전처리문에서 정의해 놓은 작업들을 먼저 수행한다.#define#define은 식별자 또는 매개 변수화된 식별자와 토큰 문자열을 연계한 매크로를 생성합니다. 매크로가 정의된 후 컴파일러는 소스 파일에서 발생하는 각 식별자를 토큰 문자열로 대체할 수 있습니다. 매크로를 사용하므로써 프로그램 내에서 자주 쓰이는 긴 수식이나 문장을 간략하게 정의하여 편리하게 사용할 수 있다.#define 주의사항 / 특징① #define문은 전처리문 이지 코드를 생성하는 명령이 아니다.② 매크로의 이름도 일종의 명칭이기 때문에 명칭 규칙에 맞게 작성해야 한다.③ 매크로 이름에는 공백이 ..
프로그래밍 설계 소프트웨어 아키텍처소프트웨어 아키텍처 프로세스에서는 고객 요구 사항을 수집 및 분석하고 이러한 요구 사항을 충족하는 소프트웨어의 설계를 만듭니다. 성공적인 소프트웨어 설계는 상충하는 요구 사항으로 인해 발생하는 필연적인 타협점 간의 균형을 맞추고, 오랜 시간에 걸쳐 발전한 설계 원칙과 실행 기법을 준수하고, 최신 하드웨어, 네트워킹 및 관리 시스템을 보완해야 합니다. 강력한 소프트웨어 아키텍처에는 이론 및 실무 주제에 대한 풍부한 경험과 막연한 비즈니스 시나리오 및 요구 사항을 구체적이고 실용적인 설계로 변환하는 데 필요한 비전이 필요합니다.소프트웨어 아키텍처에는 모든 기술 및 운영 요구 사항을 충족하는 구조화된 솔루션을 정의하고 성능, 보안, 관리 효율성과 같은 일반적인 품질 특성을 최적화하는 작업이 ..
알고리즘 순서도 알고리즘 순서도 순서도의 기본기호 추가기호 순서도 작성법 순서도 작성의 기본 사항 1) 순서도를 시작기호에서 출발하여 완료기호로 마친다. - 시작 기호 안에는 알고리즘 이름을 기록하기도 한다. 2) 기호와 기호 사이는 흐름선으로 연결하여 작업의 흐름을 명시한다. 3) 흐름선의 방향은 가급적 위에서 아래로, 왼쪽에서 오른쪽으로 향하도록 한다. - 반복 구조 등 특별한 경우는 예외로 한다. 4) 흐름선은 가급적 교차되지 않도록 하여 혼동을 피한다. - 둘 이상의 흐름선이 합류되어야 하는 경우에는 결합 기호를 사용한다. 5) 값을 보관하고 처리하기 위하여 적절한 변수를 사용한다. 6) 같은 종류의 여러 값들을 한꺼번에 보관하고 처리하기 위해서는 배열 변수를 사용한다. 7) 사용할 변수(특히 배열 변수)는 준비..
마인드맵 마인드맵(MindMap)마인드맵은 머릿속의 생각을 정리할 때 편한 방법. 나무의 뿌리가 뻗쳐 나가듯이 생각을 정리할 수 있음. 마인드맵 작성 7원칙1. 가로로 된 종이의 중심에서 시작2. 중심 생각을 나타내기 위해 이미지나 사진을 이용(3가지 이상의 색깔)3. 전체적으로 색깔을 사용4. 중심이미지에서 주가지로 연결하고 주가지의 끝에서부터 부가지로 연결. 그리고 부가지의 끝에서 세부가지를 연결5. 구부리고 흐름있게 가지를 그림6. 각 가지당 하나의 키워드만 사용7. 전체적으로 이미지를 사용
수도코드(의사코드) 수도코드(pseudocode)프로그래밍 문법(C, C++ 등)에 딱딱 맞춰서 써진 코드가 아니라 이해할 수 있는 수준으로 프로그래밍 언어를 흉내내는 정도로 쓰여진 코드. 프로그래밍의 엄밀한 문법을 따를 필요가 없기 때문에 다양한 변종이 존재함. 엄밀한 묘사가 불필요한 부분에는 자연어가 자유롭게 쓰이기도함. 의사코드의 예
배열과 포인터 첨자 연산 배열의 내부적 처리C는 내부적으로 1차원 배열만 지원함. 2차원 이상의 다차원 배열은 1차원 배열의 확장에 불과 C에는 2차원 배열이라는 것이 없음 배열을 구성하는 배열 요소의 타입에는 전혀 제한이 없음. T형 변수를 선언할 수 있으면 T형 배열도 언제나 선언할 수 있음. 배열도 유도형 타입의 일종이며 따라서 배열 그 자체가 배열의 요소가 될 수 있음.[ ] 연산자ptr이 임의의 배열을 가리키는 포인터이고 n이 정수일 때ptr[n] = *(ptr + n) 포인터 배열 정의포인터 배열이란 요소가 포인터형인 배열임. T형이 있을 때 T형 포인터를 선언할 수 있고 T형 배열도 선언할 수 있으므로 T형 포인터 배열도 선언할 수 있음. 예를 들어 크기 5의 정수형 포인터 배열을 선언하고 싶다면 다음과 ..