본문 바로가기

programming language/C9

C 언어 fgets() 함수를 활용한 파일 입력 받기 C 언어에서 fget() 을 활용하여 간단하게 입력을 받는 방법을 기록하려 한다. fget() 은 스트림에서 문자열을 읽어 들이는 함수인데~ sscanf() 와 함께 아래 코드와 같이 사용 할 수 있다. 아래 코드는 숫자 두 개를 받아서 간단하게 라인 수를 넣고 그 합을 출력해 주는 코드이다. #include #define TEXTLENGTH 2048 int main() { char text[TEXTLENGTH] ; double xi, yi ; int n=1; while (fgets (text, TEXTLENGTH, stdin) != NULL ) { if (sscanf (text, "%lf %lf", &xi, &yi ) == 2 ) { printf("%d, %lf+%lf=%lf\n",n, xi, yi, .. 2016. 3. 2.
C/C++ 매크로를 사용한 정수 타입 swap C/C++ 코딩 시 변수끼리 값을 바꾸고 싶은 경우들이 있습니다. 이를 보통 변수 swap 이라고 하는데 a, b 라는 두 변수간에 값을 바꾸기 위해서는 보통 하나의 변수가 더 필요 합니다. temp 라는 하나의 변수를 더 써서 다음과 같이 변경하는 게 일반적이죠. 비트 연산을 하지 않는 실수 타입들은 아래 방식으로 하는 게 맞을 겁니다. temp = a; a= b; b= temp; 하지만 정수 타입의 경우 비트 연산을 이용하여 temp 라는 추가적인 변수 없이 swap 이 가능 합니다. 아래와 같이 Exclusive OR 연산을 세 번 사용하면 변수끼리 값을 바꿀 수 있습니다. #define SWAP(a, b) a ^= b; b ^= a; a ^= b; 위 매크로에 대해 다음과 같이 테스트 해 봤습니다.. 2016. 2. 19.
C/C++ 비트연산 매크로 C/C++ 코딩 시 비트 연산은 굉장히 많이 하지만 자주 실수하는 부분입니다. 이런 비트연산들은 임베디드 시스템 설계시 자주 사용하곤 하는데 자주 사용하는 만큼 매크로로 만들어서 사용하면 편리하겠쬬. 제가 사용하는 비트연산 매크로는 다음과 같습니다. 필요하신 분들은 사용하시길~ 2015. 3. 31.
Windows 에서 GCC 및 boost 사용하기 윈도우에서 GCC 를 사용하고자 하는 경우 MinGW 를 사용하거나 Cygwin 을 설치하거나 또는 Virtual box 에 리눅스를 설치해서 사용할 수 있다. 아래 포스팅에서 TDM-GCC 설치 방법에 대해 소개한 적이 있는데~ 2013/06/06 - [유틸] - MinGW 64bits 설치 오늘은 MinGW 뿐만 아니라 boost 라이브러리를 사용하고 싶었다. 현재 내 PC 환경은 윈도우 7 64비트이다. 찾아보니 아래 주소의 MinGW Distro 가 나왔고, x64-native, GCC 4.8.2, Boost 1.55.0 라는 특징을 가지고 있었다. http://nuwen.net/mingw.html 또한 C++11 을 default 로 설정해 놓았다고 한다. 위 주소에 들어가서 아래 그림의 링크를.. 2014. 7. 20.
C/C++ Directory File Listing C/C++ 을 사용하여 우리가 흔히 사용하는 ls 또는 dir 명령과 같이 directory 의 파일 또는 폴더의 리스트를 얻고 싶어서 찾아보니 아래 주소의 글이 나오더군요. 역시… stackoverflow http://stackoverflow.com/questions/612097/how-can-i-get-a-list-of-files-in-a-directory-using-c-or-c boost 와 같은 매우 좋은 라이브러리를 사용하는 방법도 있지만 첫번째 답변에 dirent.h 파일을 사용하는 방법이 설명 되어 있었습니다. dirent.h 는 C POSIX library 에 포함되어 있으며 MinGW 나 GCC 등에서는 사용할 수 있지만 Visual Studio에서는 사용할 수 없더군요. http://s.. 2014. 7. 20.
C++ file path 나누기 SplitPath 프로그래밍을 하다 보면 파일 또는 폴더의 path 를 자주 다루게 됩니다. 아래 포스팅에서는 Autohotkey 에서 SplitPath 함수를 사용해서 file path 를 구분하는 방법에 대해 소개한 적이 있는데~ 2013/11/14 - [programming language/Autohotkey] - Autohotkey SplitPath 를 이용하여 폴더, 파일명, 확장자, 드라이브 구분하기 오늘은 C++ 를 사용한 file path 구분 방법에 대해 소개하려 합니다. 코드는 굉장히 간단한데요~ 위 코드와 같이 stringstream 과 getline 함수를 사용하고~ C:/Windows/System32/vbscript.dll 라는 path 를 '/' 에 따라 나눠보면~ 다음과 같은 결과가 나옵니다. .. 2014. 7. 18.
C++ range based for loops 아래 포스팅에서 소개를 했지만 C++ 의 발전은 정말 눈부신 것 같습니다. 2012/08/26 - [컴퓨터일반] - C++11 많이 좋아졌네요. 예전에 그리 어렵게 했던 또는 귀찮게 했던 것들이 하나 하나 쉬워지는 모습을 보면서 참…. 세상은 계속 좋아지는구나 라는 생각을 많이 하는데요~ 오늘은 간단하게 아래 주소에서 소개하는 range based for loops 에 대해 소개 드리려 합니다. http://www.cprogramming.com/c++11/c++11-ranged-for-loop.html 아래 포스팅의 cartesian.h 파일에서도 range based for loops 를 사용했는데요~ 참 편리하긴 하더군요. 2014/03/01 - [programming language/C/C++] -.. 2014. 3. 2.
C++ Cartesian Product 이전 포스팅들에서도 소개한 Cartesian Product 를 C++ 를 사용하여 구성하는 방법에 대해 소개해 드리려 합니다. 2013/08/18 - [programming language/MATLAB] - MATLAB 모든 경우의 수 뽑기 Cartesian Product 2013/08/18 - [programming language/powershell] - Powershell 경우의 수 조합 다 구하기(Cartesian Product) 아래 주소를 보니 Cartesian Product 와 관련하여 좋은 예제들이 많이 있더군요. http://stackoverflow.com/questions/5279051/how-can-i-create-cartesian-product-of-vector-of-vectors .. 2014. 3. 1.
C++ XML parser pugixml 오늘은 간단하게 사용할 수 있는 C++ xml parser 하나 소개해 드리려 합니다. Xml parser 라이브러리의 이름은 pugixml 이고요~ 아래 주소에서 다운로드 가능합니다. https://code.google.com/p/pugixml/downloads/list 다음 그림과 같이 편하실데로~ zip 또는 tar.gz 파일을 다운로드 받으면 됩니다. 저는 현재 최신버전인 1.2 버전의 zip 파일 버전인 pugixml-1.2.zip 을 다운로드 받았습니다. 압축을 해제하면 src,scripts,docs,contrib 폴더로 구성되는데요~ 이 중에서 src 폴더가 라이브러리 소스 파일입니다. Xml 을 사용하고자 하는 폴더에 src 폴더의 pugixml.hpp, pugixml.cpp, pugico.. 2014. 2. 9.