본문 바로가기

프로그래밍/C

(14)
[C언어]제곱을 구하는 pow함수! 음수의 제곱도 구할 수 있을까? 안녕하세요. pow함수가 음수제곱도 지원하는 줄 알고 프로그래밍하다가 4시간을 날려먹은 한노입니다. 그말 그대로 pow함수는 음수의 제곱을 구할 수 없습니다! pow함수의 지수값에 음수를 넣으면 0을 리턴하게 되죠. 하지만 조금만 생각해보면 pow함수로 음수의 제곱을 계산할 수 있게되죠. 2의 제곱 - 2 4 8 16 2의 음의제곱 - 1/2 1/4 1/8 1/16 보면 감이 오시나요? 1을 어떤 수의 제곱으로 나누면, 그 어떤 수의 음의 제곱값을 알 수 있습니다! 그럼 이를 프로그램으로 구현해보겠습니다. if(지수값>=0)1*pow(2,지수값); else 1/pow(2,fabs(지수값)); 참 쉽죠? 참고로 fabs는 수의 절대값을 구하는 함수입니다! 위 예제에서는 지수값의 절대값을 구해 pow함수가 ..
[C언어]부동소수점으로 저장된 데이터를 정수형으로 바꾸기 안녕하세요. 세상에는 다양한 장비가 있고 그 장비중에서는 메모리안에 데이터가 부동소수점형태로 저장되어있어서, 이것을 읽기 위해서 정수형의 형태로 데이터를 변환해줘야 할 때가 있어요. 이번에는 그에 대한 프로그램을 작성해볼게요. 참고로 여기서 사용하는 부동소수점은 IEEE754(https://ko.wikipedia.org/wiki/IEEE_754)를 참조했어요 출력 데이터가 16비트일 경우(혹은 상위16비트만 읽은 경우) #define DECIMAL 100 //소수점 2자리까지 보기 위해 결과값에 100을 곱해주고 소수점을 자름 #define BIAS 127 //지수에 더해주는 값(IEEE754) out = 메모리에서 읽어온 데이터 값 outSign= *out & 0b1000000000000000 ? -1..
[C언어]CMD Printf 고급 스킬! (c언어 커서 위치 바꾸기) 안녕하세요. 두부입니다. 제목을 뭘로 지을지 몰라서 저렇게 지었는데.. 무슨말인지 모르시겠죠 ㅜ 저도 잘 표현하기가 힘드네요. 제가 프로그래밍을 하다가, printf문으로 폼을 미리 출력하고 커서 위치를 자유자재로 지정하여 문자를 입/출력하는 프로그램을 만들고 싶었습니다. 그래서 만들었습니다. 일단 완성 사진부터 보여드리겠습니다. 일단 틀을 먼저 출력한 후, scanf문을 이용하여 ( ) 괄호안에 문자를 입력받는 프로그램입니다. 즉, 원래 1,2,3 이 있던 자리는 빈칸이고, 위 괄호 안부터 순서대로 커서가 깜박거리며 문자를 입력하라고 사용자에게 알려주는 프로그램입니다. 그럼 코드를 보겠습니다. #include "stdafx.h" #include #include #include #pragma warnin..
[C언어]INI파일 사용하기 (GetPrivateProfileString) *INI파일에 대한 자세한 내용은 나무위키에 검색해주세요 원형: DWORD WINAPI GetPrivateProfileString o _in_ LPCTSTR lpAppName, //Section의 이름 _in_ LPCTSTR lpKeyName, //Key의 이름 _in_ LPCTSTR lpDefault, //읽기에 실패할 경우 버퍼에 들어갈 디폴트 데이터 _out_ LPCTSTR lpReturendString, //읽은 내용이 들어갈 버퍼 _in_ LPCTSTR nSize, //읽기 버퍼의 사이즈 _in_ LPCTSTR lpFileName, //INI파일이 위치하는 경로 예:(SectionA, Bvalue, "-1", Csave, 255, ./Dinifile.ini) -> Dinifile.ini파일의 S..
[C언어]C언어 시리얼통신 - CreatFile (RS232, RS485 등) 1.CreateFile 파일 또는 I/O장치를 만들거나 여는 함수입니다. 일반적으로 사용되는 I/O장치는 파일, 파일스트림, 디렉터리, 실제 디스크, 볼륨, 콘솔 버퍼, 테이프 드라이브, 통신 리소스, 메일 슬롯 및 파이프입니다. 저는 CreateFile함수를 이용하여 시리얼통신을 위한 COM Port를 사용했으며, 제가 아는만큼 설명할수밖에 없으니 이 글에서 이 함수는 시리얼통신을 위하는게 주 목적으로 사용할 것 입니다. 이 함수는 파일이나 장치들의 핸들을 반환하며, 핸들을 통해 장치를 액세스하는 데 사용할 수 있습니다. 문법 WINAPI CreateFile( LPCTSTR lpFilename, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBU..
[C언어]멀티쓰레드 기반의 서버구현 쓰레드란? -경량화된 프로세스. 동시실행이 가능하며 프로세스의 단점을 극복하기 위해 등장. -스택을 제외한 나머지 메모리 공간을 공유 -보다 간단한 context switching -일부메모리를 공유하므로 스레드간 통신이 편리 thread관련 헤더파일은 int pthread_create( //쓰레드 생성 함수 pthread_t *thread, // 생성된 쓰레드의 ID를 저장할 변수의 포인터를 인자로 전달 pthread_attr-t *attr, //생성하고자 하는 쓰레드의 특성(attribute)를 설정할때 사용. 일반적으로 Null을 전달 void *(*start_routine) (void*), //리턴타입과 인자가 void*인 함수를 가르키는 포인터 void *arg //쓰레드에 의해 호출되는 함수에..