본문 바로가기

C

nan 처리법^^ nan은 Not a Number를 의미하는 것이죠 어떤 수를 0으로 나누었거나 음의 값의 제곱근을 구했거나 하면 발생하게됩니다. 검사하는 방법은 VC의 경우 float.h에 정의되어있는 _isnan을 사용할 수 있습니다. MSDN에는 _isnan함수가 다음과 같이 정의되어 있네요 그러나 컴파일러에 따라 isnan의 정의를 찾아서 맞게 적용해야합니다. _isnan Checks given double-precision floating-point value for not a number (NaN). int _isnan( double x ); Return Value _isnan returns a nonzero value (TRUE) if the argument x is a NaN; otherwise it ret.. 더보기
표준 함수 라이브러리!! C 언어 용도별 라이브러리 함수 Sea - Robber 1. 입출력 함수들 입출력 함수들은 라이브러리 함수 가운데 가장 기본이 되는 것으로, 좁은 의미의 표준 라이브러리는 이드 라이브러리 함수들만 얘기하는 경우가 많다. 이들 함수는 이름 그대로 입력과 출력을 수행하는 함수들로, 일반 프로그래밍 언어에서는 이들이 문장 형태로 존재하지만 C에서는 특이하게 라이브러리 형태로 존재한다. 입출력 함수에는 3가지 종류가 있는데 그 중 첫 번째가 이른바 고수준의 입출력 함수들이다. 이들을 스트림 아입출력(stream I/O)함수들이라고도 부르는데, 이들을 사용하면 파일을 스트림으로 보고, 여러 가지 포맷된 형태로 데이터를 읽어들이거나 출력할 수 있다. 스트림 입출력 힘수에서는 파일 포인터란 구조를 사용하여 열려진 파.. 더보기
ping 소스코드!! #include "winsock2.h" #pragma comment(lib, "ws2_32.lib") void error(char *str) { puts(str); exit(1); } // checksum 검사 함수 USHORT checksum(USHORT *buffer, int size) { unsigned long cksum=0; while (size > 1) { cksum += *buffer++; size -= sizeof(USHORT); } if (size) { cksum += *(UCHAR*)buffer; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16); return (USHORT)(~cksum); } // icmp 헤더 구조.. 더보기
ZLib 활용!! Zlib 활용 윤 상배 dreamyun@yahoo.co.kr 고친 과정 고침 0.8 2003년 10월 2일 23시 최초 문서작성 차례 1. 소개 2. Zlib를 이용한 압축 프로그래밍 2.1. 유틸리티 함수설명 2.1.1. compress 2.1.2. compress2 2.1.3. uncompress 2.1.4. gzopen 2.1.5. gzdopen 2.1.6. gzsetparams 2.1.7. gzread 2.1.8. gzwrite 2.1.9. int VAgzprintf 2.1.10. gzputs 2.1.11. gzgets 2.1.12. gzputc 2.1.13. gzgetc 2.1.14. gzfluseh 2.1.15. gzseek 2.1.16. gzrewind 2.1.17. gzeof 2.1.18... 더보기
현재 시간 구하는 소스 /* 매크로를 이용하는 방법은 컴파일시 시간만 가져올 수 있습니다. 다음 실행시에도 똑같은 시간이 찍히게 되죠. 다음 표준함수를 이용하면 실행시의 날짜와 시간을 가져올 수 있습니다. 연도의 경우 1900년부터 시작하므로 1900을 더해줘야 되고, 월의 경우 0부터 시작하므로 1을 더해줘야 됩니다. */ #include #include int main(void) { time_t timer; struct tm *t; /* gets time of day */ timer = time(NULL); /* converts date/time to a structure */ t = localtime(&timer); printf("%04d/%02d/%02d %02d:%02d:%02d\n", t->tm_year+1900, .. 더보기
시간분초 단위로 출력 #include void printf_Time(int, int, int); int main(void) { int in_second; //입력 초, 임시저장 int out_hour=0; int out_minute=0; int out_second=0; printf("초를 입력 해주세요 : "); scanf("%d", &in_second); out_second=in_second%60; out_minute=(in_second-out_second)/60; if(out_minute==0){ printf_Time(out_hour, out_minute, out_second); return 0; } in_second=out_minute; //임시 저장 out_minute=in_second%60; out_hour=(in_.. 더보기
구조체 비트필드 사용법 구조체 비트필드 비트구조체는 비트들을 멤버로 가지는 구조체이며, 비트필드(bit field)라고 부른다. struct tag_bit{ unsigned short a:4; unsigned short b:3; unsigned short c:1; unsigned short d:8; }; tag_bit bit; printf("%d", sizeof(bit)); // 결과 : 2 byte (컴파일환경과 옵션에 따라 달라질수 있다.) MSB : Most Significant Byte 최상위비트(이진수 숫자중에서 제일 큰자리수) LSB : Least Significant Byte 최하위비트(이진수 숫자중에서 마지막 자리수) 비트필드 저장순서는 컴파일러마다 다른데 일반적으로 오른쪽(LSB)부터 채워나간다. 규칙 1. 비.. 더보기
Data Conversion abs int 값의 절대값을 알려주는 함수이다. int abs( int n ); // n의 값에서 절대값을 리턴한다. ex> #include or int ix = -4, iy; iy = abs( ix ); // -4의 절대값인 4를 리턴한다. labs long 값의 절대값을 알려주는 함수이다. long labs( long n ); // n의 값에서 절대값을 리턴한다. ex> #include or long lx = -41567L, ly; ly = labs( lx ); // -41567의 절대값인 41567를 리턴한다. fabs double 값의 절대값을 알려주는 함수이다. double fabs( double x ); // x의 값에서 절대값을 리턴한다. ex> #include or double dx = -.. 더보기