본문으로 바로가기

바다야크

컴퓨터/프로그래밍

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

    C언어 텍스트 파일과 바이너리 파일의 차이는?

    바이너리 파일? 텍스트 파일? C/C++ 언어를 학습하다 보면 파일 종류 중에 텍스트 파일과 바이너리 파일 얘기가 나오는데요, 처음 접하시는 분이라면 혼란스러울 수 있습니다. 설명하는 내용이 대부분 눈에 보이는 문자로 저장하는 것이 텍스트 파일이고 바이트 단위로 저장하는 것이 바이너리 파일이다라고 하는데요, 그렇다면 텍스트 파일은 바이트 단위로 저장하는 것이 아닌가요? 바이너리 파일을 열어보면 내용이 전혀 없는 빈 파일로 보일까요? 텍스트 파일과 바이너리 파일 모두 바이트 단위로 저장되며, 텍스트 에디터로 파일을 열었을 때 의미 있는 내용으로 읽을 수 있는지로 구분한다는 것은 100% 정확하다고 할 수 없지만, 대부분 이렇게 생각합니다. 완전하지 않다는 것은 한글 파일을 영문 전용 에디터로 열어 봤을 때..
  • thumbnail
    컴퓨터/프로그래밍

    tcp udp 차이점과 프로그래밍에서 주의해야할 부분

    tcp/ip와 udp/ip의 다른 점은? 소켓 통신 tcp/ip와 udp/ip를 학습을 통해 어떤 프로토콜인지는 알지만, 정확한 차이점과 특성을 모르면 잘못된 코딩을 하거나 실수하는 경우가 많습니다. 통신은 외부 업체와 협업하거나 장비를 이용해야 해서 어느 한쪽이 엉뚱하게 프로그램을 만들면 간단한 일도 힘든 작업이 될 수 있는데요, tcp/ip와 udp/ip의 차이점과 각 프로토콜을 사용했을 때의 주의해야 할 내용을 알아보겠습니다. 우선 tcp/ip는 연결 지향성이고 udp/ip는 비연결 지향성이라고 합니다. tcp/ip는 스트림 데이터이고 udp/ip는 패킷 단위로 보낸다, 또는 tcp/ip는 데이터 경계가 없지만, udp/ip는 데이터 경계가 있다는 등의 생소한 단어로 어렵게 느껴집니다. 그러나 알고..
  • thumbnail
    컴퓨터/프로그래밍

    C#언어 문자열 숫자 변환 방법

    C#언어 안전하게 문자열을 숫자로 변환하는 방법 새로운 언어를 학습하게 되면 형 변환이 제일 먼저 궁금해지지 않나 생각합니다. C에서는 atoi() 함수나 sscanf() 함수를 이용해서 숫자 문자열을 숫자 변수로 받는데요, C#에서는 어떻게 할까요? 객체지향 언어답게 메서드 방식으로 변환하는데요, 방법은 이렇습니다. int nValue = int.Parse( str); 위 코드는 문자열 str의 값을 정수로 변환해서 nValue에 대입합니다. 방법은 쉽습니다만, 안심할 수 없습니다. 왜냐하면 str이 가지고 있는 문자열이 비었거나 숫자 문자열이 아니면 실행 에러가 발생합니다. 실행 에러라는 말씀은 빌드가 되어도 실행 중에 에러가 발생해서 종료가 된다는 것이죠. 이 문제를 해결하려면 C#의 예외 상황 처..
  • thumbnail
    컴퓨터/프로그래밍

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

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

    E: /var/cache/apt/archives/lock 잠금 파일을 얻을 수 없습니다 - open (11: 자원이 일시적으로 사용 불가능함)

    E: /var/cache/apt/archives/lock 잠금 파일을 얻을 수 없습니다 - open (11: 자원이 일시적으로 사용 불가능함) 우분투에서 apt-get install 로 otf2bdf를 설치하려는데 난해한 문제가 발생하네요. 원인은 모르지만, 구글 신에게 물어 보니 아래의 순서로 차례로 실행하시라고 하셔서 문제를 해결할 수 있습니다.
  • 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 길이를 구할 최대 길이 반환: 지정한 최대 길이 이..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 문자열에서 서식에 맞춘 변수 값 받기 sscanf()

    C sscanf() 문자열에서 서식에 맞춘 변수 값 받기 함수 문자열로부터 서식을 갖춘 데이터를 입력받습니다. 헤더: stdio.h 형태: int sscanf(const char *str, const char * format, ... ) 인수: char *str 문자열 char *format 서식 문자열 반환: int 입력된 항목 수를 반환하며, 오류가 발생하면 EOF를 반환 서식을 갖춘다는 것은 입력을 어떤 모양에 맞추어 입력을 받는다는 것입니다. 아래의 서식에 사용하는 변환 문자열을 참고하세요. 주의할 점은 서식에 맞추어 입력하질 못하면 다음 scanf까지 모두 에러가 발생하므로 조심하여야 합니다. 예제의 결과를 확인하세요. 변환 문자열 의미 %o 8진 정수 형식으로 입력 %d 10진 정수 형식으로 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 파일 열기 함수 fopen()

    C fopen() 파일 열기 함수 C언어 함수 fopen()은 파일을 읽거나 쓰기를 하기 위해서 파일 열기를 합니다. 파일을 사용 후에는 fclose()로 닫습니다. 헤더: stdio.h 형태: FILE *fopen(const char *path, const char *mode) 인수: char *path 열고자하는 파일의 전체 이름 char *mode 파일 열기를 위한 옵션, 사용 형태 반환: FILE * 파일 포인터를 반화하며, 열기에 실패하면 NULL을 반환합니다. mode 상세 설명 mode 설명 "r" 읽기 전용. 파일이 반드시 있어야 합니다. "w" 쓰기 전용. 파일이 없으면 생성되고, 파일이 있다면 기존 내용은 지워집니다. "a" 내용 추가. 파일이 없으면 생성되고, 파일이 있다면 기존 내용..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 파일 읽기 함수 read()

    C read() 파일 읽기 함수 open() 함수로 열기한 파일의 내용을 읽기 합니다. 헤더: unistd.h 형태: ssize_t read (int fd, void *buf, size_t nbytes) 인수: int fd 파일 디스크립터 void *buf 파일을 읽어 들일 버퍼 size_t nbytes 퍼버의 크기 반환: ssize_t == -1 실패 > 0 정상적으로 실행되었다면 읽어들인 바이트 수 C언어 read() 함수 예제 예제에 사용할 test.txt 파일에는 아래와 같이 5바이트씩 문장이 입력되어 있습니다. 12345 ABCDE abcde 67890 표준 출력함수 fgets() 에는 버퍼가 크더라도 파일의 첫 번째 행만 읽어서 반환하지만 read()는 버퍼의 크기만큼 읽을 수 있다면 모두 읽..
  • thumbnail
    컴퓨터/프로그래밍

    undefined reference to symbol 'ceil@@GLIBC_2.4' 해결 방법은?

    undefined reference to symbol 'ceil@@GLIBC_2.4' 문제없던 소스 파일에 수학 함수를 추가했더니 컴파일 에러가 발생합니다. 그런데 처음 보는 메시지예요. undefined reference to symbol 'ceil@@GLIBC_2.4' 응? 뭐지? Makefile을 다른 분이 만들어 준 것을 사용하고 있는데요, 한 개의 파일이 아니라 여러 개로 나뉘어서 복작하게 구성되어 있네요. 그래서 어떤 문제가 있는지 쉽게 알 수 없었는데요, 자세히 보니 컴파일 에러가 아니라 링크 에러입니다. 그렇다면 ceil() 함수를 담고 있는 수학 함수 라이브러리가 빠쪘나 했지만, 그럴리가. 더욱이 바로 아래 행에 "gnueabi/lib/libm.so.6: error adding symbo..
  • thumbnail
    컴퓨터/프로그래밍

    라자루스 Ansi to UTF8, UTF8 to Ansi 변환

    윈도우 프로그램을 작성하다 보면 한글 처리가 걸리는 경우가 있습니다. 자주 경험하는데요, 프로그램을 다 짰다 싶은데 생각지도 않은 한글에서 에러가 발생합니다. 그래서 문자열을 처리할 때는 항상 한글을 넣어 검증합니다. 라자루스에서 Ansi to UTF8 또는 UTF8 to Ansi 변환 방법은 아래와 같습니다. 라자루스 UTF8 to Ansi uses lazutf8; strAnsi := lazutf8.UTF8ToWinCP( strUtf8); uses절에 lazutf8 유닛 추가를 잊지 마세요. 라자루스 Ansi to UTF8 uses lazutf8; SetCodePage(RawByteString( strAnsi), 949, FALSE); strUtf8 := AnsiToUtf8( strAnsi); UTF8..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 메모리를 0으로 채움 bzero() 함수

    C bzero() 메모리를 0으로 채움 함수 malloc()이나 calloc()에서 할당 받은 메모리 또는 배열, 구조체 변수의 메모리 영역을 0으로 채워서 초기화합니다. 데이터를 읽어 들이거나 함수를 호출하기 전에 메모리를 초기화를 하는 것이 디버깅에 유리합니다. 유사 함수로 memset()이 있으나 0으로 초기화는 bzero()가 더 간편합니다. 그러나 bzero()는 deprecated 함수이므로 memset()를 사용하는 것을 권합니다. 헤더: string.h 형태: void bzero(void *s, size_t n) 인수: void *ptr 메모리의 크기를 변경할 포인터 size_t size 초기화 크기 반환: - C언어 bzero() 함수 예제 #include #include #include..
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

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