본문으로 바로가기

학습

해당되는 글 252
생활 속에서 컴퓨터·모바일 기기를 편리하게 사용하는 방법과 IT 소식을 소개합니다.
  • 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
    컴퓨터/프로그래밍

    C언어 하위 디렉터리까지 생성 디렉터리 만들기 함수

    C언어 하위 디렉터리까지 모든 디렉터리 만들기 함수 C언어에서 mkdir() 함수로 디렉터리를 생성할 수 있지만, 만들려는 디렉터리의 상위 디렉터리가 있어야 생성됩니다. 디렉터리가 없는 곳에 디렉터리를 만들 수 없습니다. 그래서 상위 디렉터리가 없으면 상위 디렉터리를 차례로 만들어 전체 디렉터리를 만드는 함수 force_directory()입니다. force_directory() #include #include #include #include #include void force_directory( char *a_dirc){ char buff[1024]; int sz_dirc; int ndx; sz_dirc = strlen( a_dirc); for ( ndx = 1; ndx < sz_dirc; ndx++)..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터함수와 콜백함수 예제 설명

    C언어 포인터 이해하기 시리즈 4부입니다. 컴퓨터에 있는 프로그램을 실행하면 프로그램이 먼저 메모리에 올라옵니다. 즉, 변수뿐만 아니라 프로그램도 메모리를 차지하는 것이죠. 당연한 얘기를 입니다만, 함수도 시작 주소가 있을 것입니다. 포인터가 변수의 메모리 주소를 갖는다면, 함수 주소도 역시 포인터로 받을 수 있습니다. 변수의 주소가 아닌 함수의 시작 주소를 담은 포인터 변수를 통해 호출하는 함수를 포인터 함수라고 합니다. 함수 이름을 직접 호출하는 것이 아니라 함수의 주소를 가지고 있는 포인터 변수로 호출하는 것이며, 포인터 변수는 고정이 아니라 코딩에 따라 여러 함수의 주소로 바꿀 수 있습니다. 즉, 함수 이름을 직접 부르는 것을 정적 호출이라고 한다면, 포인터 변수를 통하는 방법을 동적 호출이라고 ..
  • thumbnail
    컴퓨터/프로그래밍 (1)

    C언어 포인터 사용하는 이유

    C언어 포인터 사용한다 vs. 사용하지 않는다 C언어 포인터를 쉽게 이해하는 방법 시리즈 3부입니다. 꽤 오래전에 개발자 커뮤니티에서 댓글 싸움이 심하게 벌어진 적이 있는데요, C언어라고 해서 포인터를 반드시 사용할 필요가 없다는 글에 반박과 찬성 의견이 이어진 것이죠. C언어에서 포인터를 사용하지 않으면 왜 C언어로 코딩하느냐로 시작해서 포인터를 사용하지 않는다면 C언어 개발자라고 어디 가서 떠들지 말라며 다소 과격한 글이 올라왔고, 이에 대해 포인터 없는 언어도 많고 C로 코딩하지만, 포인터 없이도 잘만 작성한다는 공격적인 답글이 서로 엉켜 싸우듯 했습니다. 연산자 []로만 사용했다고 포인터를 안 썼다고? 맞습니다. 포인터 없는 언어도 많은데 C언어라고 꼭 포인터를 써야 할까요? 당연히 포인터 없이도..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터 쉽게 이해하기 2부

    C언어 포인터 이해하기 1부에 이어 2부 글입니다. 이전에는 배열과 비교하여 포인터에 대해 알아 보았는데요, 이번에는 C언어의 포인터에서 아리까리 헷깔리는 부분에 대해서 알아보겠습니다. 이 글도 포인터를 학습 수준에서 알기는 아는데 정확히 모르는 분을 위한 내용입니다. C언어 포인터 변수 타입별 차이 C언어의 포인터는 주소를 갖는 정수형 변수이지만, 다른 변수처럼 char, short, int, long 등으로 선언합니다. 그렇다면 char *ptr1하고 int *ptr2하고 어떤 점이 다를까요? ptr1보다 ptr2의 변수 크기가 더 클까요? C언어는 변수 사용이 다른 언어에 비해 매우 자유로운데요, C언어로 코딩하다가 다른 언어로 바꾸면 한동안 어려움을 느낄 정도입니다. 다른 언어는 문자 변수로 선언..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터와 배열 쉽게 이해하는 방법 1부

    이 글은 C의 포인터를 학습 수준에서 알기는 아는데 정확히 모르는 분을 위한 글입니다. C언어를 학습하다 보면 대부분 포인터가 제일 어렵다고 합니다. 프로그래밍 경력자도 C언어는 자유도가 높아서 불만인 분이 많습니다. 너무 헷갈린다는 것이죠. 오죽하면 읽기 어렵고 이해하기 어려운 C언어 프로그래밍 대회 IOCCC(International Obfuscated C Code Contest)가 열렸겠습니까. 출품 작을 보았는데, 오우~ 도대체 뭔 소리인지. 당연히 포인터가 들어갑니다. 문제 1) printf( "%c\n", 1["badayak.com"+1]); 아주 간단한 코드인데 결과가 예상되시나요? 포인터 없이 배열로 작성되었지만, 포인터를 알아야 쉽게 이해되는 내용입니다. C언어를 학습하시다 보면 포인터는..
  • 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
    컴퓨터/프로그래밍 (2)

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

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

    TCP/IP 전송 버퍼 빈 용량 확인하는 방법

    TCP/IP 전송 버퍼 남은 용량 확인 이유 소켓통신 중에 TCP/IP 통신은 반드시 전달해야 하는 데이터를 보내거나 대용량의 데이터를 순서에 맞추어 전송할 때 매우 유용합니다. UDP/IP를 오토바이 택배라고 한다면 TCP/IP는 컨베이어 벨트로 물건을 하나씩 전달하는 것과 비교할 수 있습니다. 오토바이 택배는 배달 사고가 날 수 있지만, 컨베이어 벨트는 좀 더 안전하게 전달할 수 있습니다. 오토바이 택배는 데이터가 많은 경우 여러 명으로 나누어서 보내다 보면 도착하는 순서가 바뀔 수 있지만, 컨베이어 벨트는 물건을 올려놓는 순서대로 상대방이 받습니다. 이렇게 TCP/IP는 전송할 데이터를 write()하면 알아서 수신자가 받아서 편한데요, 이렇게 편한 이유는 중간에 TCP 프로토콜이 열심히 일하기 때..
  • 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언어 텍스트 파일 읽기 예제 thumbnail 모기 물린데 가려움증 없애는 기구 3가지 thumbnail 바퀴벌레 약 추천 맥스포스겔 셀렉트 이지겔 (2) thumbnail C언어 텍스트 파일 쓰기 방법 thumbnail 카카오톡 책갈피로 중요한 톡 북마크 표시 thumbnail 윈도우 노트북 SD 메모리 카드 암호화 방법 thumbnail 삼성덱스 휴대폰 충전 방법 (1) thumbnail 돈 버는 어플 3종 현금되는 영수증 인증과 돈버는 만보기앱
    다행이네요. 약 효과가 아무⋯ 💬바다야크 이사 오기전 전에 저도 썼었⋯ 💬라디오키즈 구글 크롬 원격 데스크톱을⋯ 💬바다야크 구글크롬 원격데스크탑 사용⋯ 💬ㅠㅠ 아! 그렇습니까. 맥을 사용하⋯ 💬바다야크