본문으로 바로가기
homeimage

함수

해당되는 글 253
  • thumbnail
    컴퓨터/프로그래밍

    C언어 날짜 시간 문자열 분리 팁

    C언어 날짜 시간 문자열 분리 팁 C언어는 문자열 처리하기가 참 까다롭습니다. 문자열을 합치는 간단한 일도 메모리를 따로 생성해서 복사해야 하는데, 다른 언어에 비하면 귀찮은 작업입니다. 문자열 합치기도 이러한데, 특정 문자열에서 일부를 분리해서 새로운 문자열을 만드는 것은 더욱 귀찮아집니다. 통신으로 날짜와 시간이 섞인 문자열을 받았습니다. 그 문자열에서 날짜와 시간을 분리해서 화면에 출력하려고 합니다. 예를 들어서 "badayak.com20220920150525jwmx.tistory.com" 이런 데이터를 받으면 "데이터 날짜: 2022년 09월 20일 15시 05분 25초"로 화면에 출력하고 싶습니다. 그래서 아래와 같이 코드를 작성했습니다. C언어 memcpy() 함수 사용 #include #in..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 시리얼 통신 브레이크(break) 신호 전송 방법

    C tcsendbreak() 시리얼 통신 break 신호 전송 함수 시리얼 통신에서 브레이크(break) 신호를 보내려면 tcsendbreak() 함수를 사용하면 됩니다. 상대 쪽에서 break 신호를 주었을 때 수신 버퍼에 0x00이 있어서 0x00을 보내면 break 신호가 전송되는 줄 아는 분이 계시더군요. 이미지나 동영상처럼 바이너리 파일을 전송할 경우 0x00이 있을 수 있는데, 그때마다 break 신호가 발생해서는 안 되겠지요. 헤더 : termios.h 형태: int tcsendbreak(int fd, int duration) 인수: int fd 시리얼 포트와 연결된 파일 디스크립트 int duration 전송 시간 반환: 0 == 성공, -1 == 실패 및 errno에 에러코드 대입 int..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 printf() 숫자가 inf로 나오는 이유는

    printf() 숫자 대신에 inf 문자열이 출력? C언어에서 숫자 계산하고 화면에서 확인하려고 printf()를 실행했는데 숫자는 나오지 않고 엉뚱하게 문자로 "inf"라고 나왔다면 계산 결과가 무한대로(infinite) 숫자가 너무 크다는 뜻입니다. 한마디로 계산 중에 숫자가 너무 커져서 제대로 계산할 수 없었다는 것입니다. #include #include int main( void) { double result = pow( 1500.0, 300.0); printf( "x ^ y = %f\n", result); return 0; } 위 프로그램을 컴파일하고 실행해 보겠습니다. inf 값으로 오류 계산을 막는 방법 숫자가 너무 커서 계산을 못 했다는 것은 알겠습니다. 그렇다면 더 이상 이 결과로 다음 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 제곱 연산자, 기호는?

    C언어 제곱 연산자는 없다? C언어로 프로그래밍하다 보면 타 언어에 비해 이상한 것이 한둘이 아닙니다만, 그중에 하나가 제곱 구하는 연산자입니다. 결론부터 말씀드리면 C언어에서는 제곱 구하는 연산자나 기호 없습니다. 기호 ^ 이거 아냐 생각할 수 있지만, C언어에서 연산자 ^는 제곱을 구하는 것이 아니라 XOR 비트 연산자입니다. 그렇다면? pow() 계열의 함수를 사용해야 합니다. 다른 언어에서는 기호 한 번으로 쉽게 구할 수 있는 제곱을 왜 C언어에서는 함수를 사용해야 하나 의아하겠지만, 실제 코딩을 하다 보면 제곱을 구하는 것보다 XOR 연산을 더 자주 사용합니다. 이런 이유 때문에 C언어는 제곱을 구하는 연산자를 포기(?)하고 함수를 사용하게 했는지 모르겠습니다. 또한, 전혀 아니라고 하실 분이 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 파일 복사 함수 filecopy()

    C언어 파일 복사 함수 filecopy() C언어에서 사용할 수 있는 파일 복사 함수 filecopy()입니다. 원본 파일 이름과 사본 파일 이름을 인수로 넘겨주면 되며, 실행 결과를 아래의 상수 값으로 반환합니다. 0 : 파일 복사 완료 -1 : 사본 파일 이름이 원본과 같습니다. -2 : 원본 파일 읽기 에러 -3 : 사본 파일 생성 에러 -4 : 사본 파일 쓰기 에러 함수 호출 후에 반환 값이 0이면 정상적으로 파일이 복사된 것입니다. -1인 경우 생성하려는 파일 이름이 원본과 같을 때입니다. -2는 원 파일 읽기를 못할 때, -3과 -4는 대상 파일 처리 중 에러가 발생한 것입니다. filecopy() 함수 사용 예제 #include #include #include #include #include..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 파일 크기 구하기 함수 filesize()

    C언어에서 파일 크기를 구하는 함수 filesize()입니다. 만일 체크할 대상 파일이 닫기 전에 계속 쓰기를 하여 저장 중이라면 sync() 함수를 사용하여 버퍼에 있는 내용이 물리 장치에 실제로 저장하게 한 후에 filesize()를 호출하세요. C언어 파일 크기 구하기 함수 filesize() #include #include int filesize( const char *filename){ struct stat file_info; int sz_file; if ( 0 > stat( filename, &file_info)){ return -1; // file이 없거나 에러 } return file_info.st_size; } filesize() 함수 예제 인수로 파일 이름을 넣어 호출합니다. int m..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 변수 크기 구하기 sizeof()

    C sizeof() 자료형 변수 크기 구하기 함수 인수로 받은 자료형 변수 크기를 바이트 단위로 구한다. 헤더: stdio.h 형태: unsigned long sizeof( 자료형) 인수: 자료형 크기를 구할 자료형 반환: unsigned long 자료형의 바이트 단위 크기 sizeof() 예제 #include int main( void) { char v_char; int v_int; long v_long; char *p_char; int *p_int; long *p_long; printf( "v_char =%ld\n", sizeof( v_char)); printf( "v_int =%ld\n", sizeof( v_int)); printf( "v_long =%ld\n", sizeof( v_long)); p..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 심볼릭링크 정보 구하기 readlink()

    readlink() function in C language C함수 readlink()는 심볼릭 링크의 원래 위치나 파일 정보를 구합니다. readlink()의 주의할 점은 버퍼에 정보를 저장하면서 NULL 코드를 추가하지 않습니다. 그러므로 반드시 버퍼를 초기화한 후에 호출합니다. 헤더: unistd.h 형태: ssize_t readlink(const char *path_name, char *buff, size_t buff_size) 인수: const char *path 심볼릭 링크 이름 char *buff 정보를 받아 올 버퍼 size_t buff_size 퍼버의 크기 반환: ssize_t == -1 실패 > 0 성공시 정보의 바이트 수 C언어 readlink() 함수 예제 심볼릭 링크 /tmp/ln..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 배열 초기화 함수와 주의사항

    C언어 배열 초기화 함수 두 가지 C언어에서 배열을 초기화할 때 memset()와 bzero() 중 어떤 함수를 사용하시나요? bzero()가 간단해서 편하기도 하지만, 함수 이름이 뭘 하는지 명확해서 소스 코드를 이해하는데 도움을 줍니다. 그러나 이런 장점이 있다고 해도 memset()을 사용하는 것이 좋습니다. 왜일까요? bzero()가 "deprecated 함수"이기 때문인데요, deprecated의 뜻이 "더 이상 사용되지 않는"다는 뜻을 보더라도 하위 호환을 위해 제공되는 것이어서 bzero()보다는 memset()을 사용하는 것을 권합니다. 소프트웨어 기능 중에 "be deprecated"로 언급되어 있다면 더 좋은 것이 나와서 앞으로 이 기능이 없어질지 모른다는 뜻으로 쓰인다는 것을 생각하면..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 링버퍼 구현 방법(Ring Buffer)

    편리한 C언어 링버퍼 프로그램 코딩에서 버퍼는 매우 중요합니다. 사용처에 따라 다양한 방식으로 구현하는데요, 특히 링버퍼(Ring Buffer)는 다목적이라고 할 수 있습니다. 통신을 통한 시스템 제어 프로그래밍에서 버퍼는 매우 중요합니다. 외부에서 제어 신호가 계속 오는데 시간이 걸려서 제 때에 처리하지 못하거나, 반대로 시스템 상태를 계속해서 서버에 전송해야 하는데 갑자기 통신 상태가 불량해지 경우 링버퍼로 문제를 해결할 수 있습니다. 링버퍼는 구현하기 쉽고 버퍼가 모두 찼을 경우 어떻게 처리할지 선택에 따라 구현하기도 수월합니다. 오래된 자료부터 버려가면서 버퍼링하거나 버퍼 오버로 판단하여 에러 처리 루틴을 호출합니다. 링버퍼는 아래와 같은 구조로 되어 있습니다. 링버퍼는 버퍼와 버퍼에 쓰기와 읽기..
  • thumbnail
    컴퓨터/프로그래밍

    C#언어 불필요한 이벤트 메서드 함수 제거 방법

    C#언어 이벤트 핸들러 제거 방법 C#을 학습하고 있는데요, 윈도우 폼에 컨트롤을 배치하고 이벤트를 처리하는 메서드 함수를 작성했는데, 필요 없다고 그냥 지워 버리면 에러가 발생하네요. 실행은 돼도 디자이너가 열리지 않습니다. 아마도 디자이너가 참조할 이벤트 메서드 함수가 없어져서 문제가 되는 것 같은데요, 컨트롤이 필요 없다면 컨트롤과 함께 함수도 같이 제거하면 되지만, 이벤트 처리 함수만 삭제하려면 어떻게 해야 할까요? 이벤트 메서드 함수보다는 이벤트 핸들러라고 하는 것이 더 친숙한데요, C# 책에서는 이벤트 메서드 함수 또는 이벤트 메서드로 많이 사용하는 것 같습니다. 델파이에서는 Save 메뉴를 실행할 때 마다 내용이 없는 비어있는 이벤트 메서드 함수 모두를 자동으로 제거되는데요, C#에서는 자동..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 strnlen() 문자열 길이 구하기 함수

    C strnlen() 문자열 길이 구하기 함수 strnlen() C언어에서 문자열 길이를 구하는 함수에는 strlen()과 strnlen()이 있습니다. strlen()은 문자열만 인수로 받지만, strnlen()은 최대 길이까지 입력 받습니다. 이유는 인수로 받은 문자열 변수가 초기화가 안 되었고 NULL 문자가 없을 경우 실행 중 위험을 줄이기 위함입니다. 즉, strnlen()은 strlen()처럼 NULL까지의 길이를 찾되 특정 길이 이상은 검색하지 않도록 합니다. 헤더: string.h 형태: size_t strlen( const char *str, size_t maxlen) 인수: char *str 길이를 구할 문자열 size_t maxlen 길이를 구할 최대 길이 반환: 지정한 최대 길이 이..
    최근글
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

    이모티콘을 클릭하면 댓글창에 입력됩니다.