본문으로 바로가기

컴퓨터/프로그래밍

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

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

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

    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
    컴퓨터/프로그래밍 (1)

    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
    컴퓨터/프로그래밍 (5)

    C언어 텍스트 파일 읽기 예제

    C언어 텍스트 파일 읽기 함수 C언어에서 텍스트 파일 읽기에는 fopen() 함수로 파일을 열어서 fgets() 함수를 사용하는 것이 편합니다. open() 함수로 파일을 열어서 read() 함수로 파일을 읽을 수 있지만, 텍스트 파일 읽기는 fopen()와 fgets() 조합이 편한 것은 한 줄씩 읽을 수 있어서입니다. read() 함수와 fgest() 함수 둘 다 파일 내용을 받을 수 있는 버퍼를 지정하고 버퍼 크기까지 알려 주지만, 차이라면 read() 함수는 버퍼 크기보다 파일 사이즈가 크다면 버퍼 크기만큼 읽어서 버퍼에 저장합니다. 이에 비해 gets()는 버퍼 크기만큼 파일의 내용을 읽되 한 줄의 끝을 만나면 거기까지만 담습니다. 텍스트 파일의 경우 줄 단위로 읽어서 처리하는 경우가 많기 때문..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 텍스트 파일 읽기 예제

    C언어 텍스트 파일 읽기 함수 C언어에서 텍스트 파일 읽기에는 fopen() 함수로 파일을 열어서 fgets() 함수를 사용하는 것이 편합니다. open() 함수로 파일을 열어서 read() 함수로 파일을 읽을 수 있지만, 텍스트 파일 읽기는 fopen()와 fgets() 조합이 편한 것은 한 줄씩 읽을 수 있어서입니다. read() 함수와 fgest() 함수 둘 다 파일 내용을 받을 수 있는 버퍼를 지정하고 버퍼 크기까지 알려 주지만, 차이라면 read() 함수는 버퍼 크기보다 파일 사이즈가 크다면 버퍼 크기만큼 읽어서 버퍼에 저장합니다. 이에 비해 gets()는 버퍼 크기만큼 파일의 내용을 읽되 한 줄의 끝을 만나면 거기까지만 담습니다. 텍스트 파일의 경우 줄 단위로 읽어서 처리하는 경우가 많기 때문..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 텍스트 파일 쓰기 방법

    C언어에서 텍스트 파일 쓰기를 위한 간단한 예제입니다. C언어 open()과 fopen() 함수를 이용하여 읽고 쓸 수 있는데요, 우선 텍스트 파일하고 바이너리 파일과의 차이점을 알아야 합니다. 메모장이나 노트패드뿔뿔 같은 텍스트 에디터로 열어서 바로 읽을 수 있는 것은 텍스트 파일이고 꿰껙쿽꺽 이상하게 출력되면 바이너리 파일이라고 이해하시는 분이 있습니다만, 틀린 것은 아니어도 정확한 구분이라고 할 수 없습니다. 텍스트 파일과 바이너리 파일의 차이점 텍스트 파일과 바이너리 파일의 차이점을 쉽게 이해하려면 숫자 255를 어떻게 저장하느냐 방법으로 구별하면 됩니다. 1개 바이트로 표현할 수 있는 최대 숫자는 255입니다. 그럼에도 각 단위의 숫자 각각을 문자 코드 '2'·'5'·'5'로 저장했다면, 즉 0..
  • thumbnail
    컴퓨터/프로그래밍 (1)

    삼성덱스 휴대폰 충전 방법

    갤럭시 노트로 바꾸면서 삼성 덱스를 유용하게 사용하고 있는데요, 특히 휴대용 모니터에 갤럭시 노트를 연결하면 따로 전원을 연결하지 않더라도 갤럭시 노트가 제공하는 전원만으로 화면 큰 모니터로 삼성 덱스를 사용할 수 있습니다. 휴대용 모니터의 저전력 설계도 놀랍지만, 모니터를 켤 수 있는 전원을 제공하는 갤럭시 노트도 대단합니다. 휴대용 모니터와 삼성덱스 휴대용 모니터에 갤럭시 노트를 연결하여 삼성 덱스를 사용하는 모습입니다. 참고로 사진 속의 휴대용 모니터는 한성컴퓨터 모니터 400입니다. 출력이 높은 모니터 전용 어댑터가 있지만, 어댑터 없이 전원을 오로지 갤럭시 노트11의 배터리로만 쓸 수 있습니다. 즉, 모니터와 갤럭시 노트를 한 개의 USB Type-C 케이블만 연결해서 삼성 덱스를 사용하는 것으..
  • thumbnail
    컴퓨터/프로그래밍

    삼성 덱스 화면 캡쳐 방법

    갤럭시 핸드폰을 모니터에 연결하여 삼성 덱스를 실행했을 경우 갤럭시의 화면 캡쳐 방법으로는 삼성 덱스의 넓은 화면은 캡쳐되지 않습니다. 갤럭시의 작은 화면만 복사되지요. 삼성 덱스 화면을 캡쳐하려면 삼성 덱스 작업 표시줄에 있는 화면 캡쳐 기능을 클릭하면 됩니다. 삼성 덱스 화면 캡쳐 방법 까다로울 줄 알았는데 등잔 밑이 어둡죠? 저도 처음 알았을 때는 왠지 기운이 빠지는 듯했습니다. 바로 앞에 놔두고 엉뚱하게 버튼을 눌러되었으니.... 갤럭시 핸드폰 화면 캡쳐 가장 쉬운 방법 화면 캡쳐 방법 얘기가 나왔으니 갤럭시 핸드폰의 화면 캡쳐 방법 중 가장 쉬운 방법을 소개합니다. 앱을 설치해야 하지만, 기본 화면 캡쳐 방법인 전원+음소거 짧게 누르는 방법보다 쉽습니다. 앱을 설치하는 것을 꺼리는 분이 계시겠지..
  • thumbnail
    컴퓨터/프로그래밍

    라자루스 내문서 폴더 위치 구하는 방법

    오픈 소스 윈도우 프로그램 통합개발환경 라자루스에서 내 문서 폴더 위치를 구하는 방법입니다. 라자루스는 델파이 개발환경을 리눅스용으로도 만들자 해서 시작된 프로젝트라서 아마도 최근 버전의 델파이에서도 같은 방법으로 구할 수 있지 않을까 생각됩니다. How to get the "My documents" folder location in lazarus 예제를 위한 폼 디자인은 간단합니다. Button1은 내문서 폴더 위치를 구해서 labDocuments에 출력합니다. 전체 소스는 아래와 같습니다. unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls; type { ..
  • thumbnail
    컴퓨터/프로그래밍

    라자루스 사용자 AppData 폴더 위치 구하기

    프로그램을 윈도우 프로그램 폴더에 저장했다면, 권한 문제 대문에 그 위치에 파일을 생성하지 못합니다. 이런 경우 AppData 폴더를 이용합니다. AppData 폴더 위치는 ShGetSpecialFolderPath() 함수에 CSIDL_LOCAL_APPDATA를 인수로 호출하여 구할 수 있습니다. ShGetSpecialFolderPath() 함수를 사용하려면 uses절에 shlobj를 추가해야 합니다. How to get the appdata folder location in Lazarus 라자루스에서 AppData 폴더 위치를 구하는 예제입니다. Button1을 클릭하면 labAppData에 AppData 폴더 위치를 표시합니다. unit Unit1; {$mode objfpc}{$H+} interfac..
  • thumbnail
    컴퓨터/프로그래밍

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

    C언어 파일 복사 함수 filecopy() C언어에서 사용할 수 있는 파일 복사 함수 filecopy()입니다. 원본 파일 이름과 사본 파일 이름을 인수로 넘겨주면 되며, 실행 결과를 아래의 상수 값으로 반환합니다. 0 : 파일 복사 완료 -1 : 사본 파일 이름이 원본과 같습니다. -2 : 원본 파일 읽기 에러 -3 : 사본 파일 생성 에러 -4 : 사본 파일 쓰기 에러 함수 호출 후에 반환 값이 0이면 정상적으로 파일이 복사된 것입니다. -1인 경우 생성하려는 파일 이름이 원본과 같을 때입니다. -2는 원 파일 읽기를 못할 때, -3과 -4는 대상 파일 처리 중 에러가 발생한 것입니다. filecopy() 함수 사용 예제 #include #include #include #include #include..
    최근글 thumbnail 오리코 SSD 케이스 ORICO-M2 NVMe SSD 인클로저 사용후기 thumbnail 윈도우10·11 악성 소프트웨어 제거 도구 thumbnail C언어 날짜 시간 문자열 분리 팁 thumbnail 오닉스 포크3 구글 키보드 설치 방법 (1) thumbnail 전자책 오닉스 포크3 구글 플레이 스토어 설치 방법 thumbnail 페퍼스 파킹통장 개설 네이버 페이 1만 포인트 받기 thumbnail 갤럭시 걸음수 측정 안됨 해결 방법 thumbnail 구글 AR 증강현실 동물 검색 3D 입체 이미지
    말씀 고맙습니다. 즐거운 하⋯ 💬바다야크 감사합니다. 이해하는데 많은⋯ 💬무명씨 [승인대기] 💬차트의신 모뎀에 컴퓨터를 직접 연결해⋯ 💬바다야크 안되어서 따라하는데 브릿지⋯ 💬왜안될까요