Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그래밍

  1. C 언어 while(1) vs while(0): 차이점과 동작 원리 총정리

    C 언어 while 반복문의 기본 원리C 언어에서 while 키워드는 인자로 전달된 조건식을 검사하여 반복 실행 여부를 결정하는 반복문을 정의하는 데 사용됩니다. 조건식은 참(true) 또는 거짓(false) 중 하나로 평가되며, 조건이 참이면 블록 안의 코드가 계속해서 반복 실행되고, 조건이 거짓이면 블록 안의 코드는 단 한 번도 실행되지 않습니다.이러한 특성 때문에 while 루프에 어떤 값을 인자로 전달하느냐에 따라 while(1)과 while(0)의 동작이 완전히 달라집니다.while(1) — 조건이 항상 참인 무한 루프wh

  2. C 언어 vs 파이썬: 초보자도 이해할 수 있는 핵심 차이점 6가지

    C와 파이썬은 현재 가장 널리 사용되는 프로그래밍 언어 두 가지입니다. 두 언어는 각각 고유한 특성과 장점을 지니고 있으며, 바로 이러한 특징들이 애플리케이션 개발 분야에서 큰 인기를 얻는 이유가 되었습니다. 이 글에서는 C와 파이썬의 주요 차이점을 항목별로 자세히 살펴보겠습니다. C와 파이썬의 주요 차이점 1. 정의 및 개요 C 언어: C는 범용 프로그래밍 언어로, 단순하면서도 유연한 문법 덕분에 오랜 기간 큰 사랑을 받아왔습니다. 기계에 독립적인 구조적(structured) 프로그래밍 언어로서, 운영체제부터 임베디드 시스템까

  3. C언어 scanf()와 gets() 함수의 차이점 완벽 정리

    C 언어에서 scanf() 함수와 gets() 함수는 모두 외부 소스(키보드)로부터 입력을 받아 시스템에 전달하기 위해 정의된 표준 입력 함수입니다. 두 함수는 비슷한 용도로 사용되지만, 내부 동작 방식과 특성에는 몇 가지 중요한 차이점이 존재합니다. 아래 표에서 C 언어의 scanf()와 gets() 함수 간의 핵심적인 차이점을 확인해 보세요. 번호구분scanf() 함수gets() 함수 1정의키보드로부터 입력을 읽어 지정된 형식 지정자(format specifier)에 따라 저장합니다. 공백, 줄바꿈(newline) 또는

  4. 루프, 재귀, 제어 구조 없이 'ABCD'를 무한히 반복 출력하는 C 프로그램 작성법

    이 문제에서는 루프(loop), 재귀(recursion), 그리고 그 외 어떠한 제어 구조도 사용하지 않고 문자열 ABCD를 반복해서 출력하는 C 프로그램을 작성해야 합니다. 일반적으로 특정 코드 블록을 반복 실행할 때 가장 널리 쓰이는 방법이 바로 루프, 재귀, 제어 구조입니다. 하지만 이번에는 이 세 가지를 모두 배제한 상태에서 동일한 코드 블록을 무한히 실행해야 합니다. 이를 해결하는 핵심 아이디어는 루프를 돌리는 대신 같은 프로그램 자체를 계속해서 다시 실행하는 것입니다. 코드 내부에서 system() 함수를 호출하면 운영

  5. C언어에서 세미콜론 없이 'Tutorials Point'를 출력하는 프로그램 작성법

    이 문제에서는 세미콜론(;)을 사용하지 않고 Tutorials Point를 출력하는 프로그램을 작성해야 합니다.C언어에서는 하나의 문장(statement)을 끝맺기 위해 반드시 세미콜론이 필요하다는 것은 기본적인 상식입니다. 일반적으로 printf 문 역시 끝에 세미콜론이 붙어야만 비로소 실행됩니다.그렇다면 세미콜론 없이 문자열을 출력하려면 어떻게 해야 할까요? 해답은 printf 함수의 반환값에 숨어 있습니다. printf 함수는 화면에 문자열을 출력한 뒤, 실제로 출력된 총 문자 수를 정수 형태로 반환합니다. 이 특성을 잘 활용

  6. Bash 스크립트로 파일에서 특정 줄 출력하는 방법

    이 프로그램에서는 text.txt라는 파일이 주어졌을 때, 파일에서 특정 줄만 골라서 출력하는 작업을 수행합니다.Bash 스크립트에서 이를 구현하는 방법은 여러 가지가 있으며, 대표적으로 awk, sed, head 명령어를 활용할 수 있습니다.기본 문법각 명령어를 사용해 파일의 특정 줄 번호(LINE_NUMBER)에 해당하는 내용을 출력하는 기본 문법은 다음과 같습니다.$> awk {if(NR==LINE_NUMBER) print $0} filename$> sed -n LINE_NUMBERp filename$> hea

  7. C언어에서 Ctrl+C로 종료되지 않는 프로그램 만드는 방법

    이 글에서는 사용자가 Ctrl+C를 눌러도 프로그램이 종료되지 않고, 대신 Ctrl + C cannot terminate the program이라는 메시지를 출력하도록 만드는 방법을 살펴봅니다. 이를 구현하려면 시그널 핸들링(Signal Handling) 기법을 활용해야 합니다. 사용자가 Ctrl+C를 누르면 운영체제가 프로그램에 SIGINT라는 시그널을 전송합니다. 이 시그널을 가로채 직접 처리하면 프로그램이 강제 종료되는 것을 막을 수 있습니다. 동작 원리 C 언어에서는 <signal.h> 헤더 파일에 정의된 sig

  8. C 언어로 구현하는 아나그램 부분 문자열 검색 프로그램

    아나그램 부분 문자열 검색이란?이 문제에서는 길이가 n인 텍스트(text) 문자열과 길이가 m인 패턴(pattern) 문자열 두 개가 주어지며, 텍스트 안에서 패턴과 그 모든 순열(아나그램)이 나타나는 위치를 찾는 것이 목표입니다.예를 들어 이해해 보겠습니다.입력text = xyztrwqyzxfgpattern = xyz출력Found at index 0Found at index 7위 예시에서 인덱스 0의 xyz와 인덱스 7의 yzx는 서로 글자의 순서만 다른 아나그램 관계이므로, 두 위치 모두 결과로 출력됩니다.문제 해결 접근 방법이

  9. C 언어로 구현하는 반복 병합 정렬(Iterative Merge Sort) 프로그램

    병합 정렬(Merge Sort)이란?병합 정렬(Merge Sort)은 분할 정복(Divide and Conquer) 기법에 기반한 대표적인 정렬 알고리즘입니다. 시간 복잡도는 O(n log n)으로, 입력 데이터가 많아지더라도 비교적 안정적인 성능을 유지할 수 있으며, 최악의 경우에도 동일한 복잡도를 보장한다는 장점이 있습니다.알고리즘의 기본 동작 과정은 다음과 같습니다. 먼저 배열을 동일한 크기의 두 부분으로 분할한 뒤, 각 부분을 정렬하고, 마지막으로 두 부분을 하나의 정렬된 배열로 병합합니다.반복 병합 정렬(Iterative

  10. C언어로 구현하는 KMP 알고리즘: 문자열 패턴 검색 완벽 가이드

    이 문제에서는 텍스트(text)와 패턴(pattern) 두 개의 문자열이 주어집니다. 우리의 과제는 KMP 알고리즘을 이용한 패턴 검색 프로그램을 작성하여, 텍스트 문자열 내에서 패턴이 나타나는 모든 위치를 찾아내는 것입니다.즉, 텍스트 안에 패턴이 등장하는 모든 인덱스를 출력해야 합니다.문제 이해를 위한 예시입력text = xyztrwqxyzfg pattern = xyz출력Found at index 0 Found at index 7위 예시에서 패턴 xyz는 텍스트의 0번째 인덱스와 7번째 인덱스에서 발견됩니다.KMP(Knuth-M

  11. C 언어로 구현하는 라빈-카프(Rabin-Karp) 알고리즘 패턴 검색 프로그램

    이 문제에서는 텍스트(text)와 패턴(pattern), 두 개의 문자열이 주어집니다. 우리의 과제는 라빈-카프(Rabin-Karp) 알고리즘을 활용한 패턴 검색 프로그램을 작성하여, 텍스트 문자열 안에서 패턴이 나타나는 모든 위치를 찾아내는 것입니다.예시를 통해 문제를 이해해 보겠습니다.입력 예시text = xyztrwqxyzfg pattern = xyz출력 결과Found at index 0 Found at index 7텍스트 xyztrwqxyzfg 안에서 패턴 xyz는 인덱스 0과 인덱스 7, 두 곳에서 발견됩니다.라빈-카프 알

  12. C언어로 구현하는 재귀 삽입 정렬(Recursive Insertion Sort) 완벽 가이드

    삽입 정렬(Insertion Sort)은 제자리(in-place)에서 수행되는 비교 기반 정렬 알고리즘입니다. 이 알고리즘은 각 요소를 이미 정렬된 부분 배열 내에서 자신의 올바른 위치에 삽입하는 방식으로 동작합니다. 즉, 현재 요소 앞에 있는 부분 배열은 항상 정렬된 상태를 유지합니다.알고리즘 동작 원리삽입 정렬의 기본적인 진행 과정은 다음과 같습니다.1단계 − 인덱스 1부터 n-1까지 반복문을 수행합니다.2단계 − 위치 i에 있는 요소 array[i]를 선택합니다.3단계 − 선택한 요소를 arra

  13. C 언어로 연결 리스트를 역순으로 뒤집는 프로그램 (재귀·반복 방식)

    문제 개요이 문제에서는 하나의 연결 리스트가 주어지며, 이를 역순으로 뒤집는 프로그램을 작성하는 것이 목표입니다. 프로그램은 주어진 연결 리스트의 링크 방향을 반대로 바꾸어, 뒤집힌 연결 리스트를 결과로 반환합니다.연결 리스트(Linked List)란?연결 리스트는 데이터 항목들을 담고 있는 노드들이 순서대로 연결된 자료구조입니다. 각 노드는 실제 데이터와 함께 다음 노드를 가리키는 링크(포인터)를 포함하고 있어, 노드들이 사슬처럼 이어진 형태를 이룹니다.예시9 -> 32 -> 65 -> 10 -> 85 -&g

  14. fork()와 pipe()를 활용한 C 프로그래밍 예제 – 두 프로세스로 문자열 연결하기

    이 글에서는 리눅스 시스템 콜인 fork()와 pipe()의 실제 동작을 시연하는 C 프로그램을 다룹니다. 두 개의 프로세스를 생성하여 협력적으로 문자열을 연결(concatenate)하는 프로그램을 만들어 보겠습니다. 첫 번째 프로세스는 사용자 입력을 받아 파이프를 통해 두 번째 프로세스로 전달하고, 두 번째 프로세스는 전달받은 문자열을 미리 정의된 문자열과 연결한 뒤 결과를 다시 되돌려줍니다. 본격적인 예제에 앞서 fork()와 pipe()의 기본 개념을 간단히 복습해 보겠습니다. fork() fork()는 새로운 자식 프로세스

  15. C 언어로 토큰 감지 프로그램 만들기 – 어휘 분석기(Lexical Analyzer) 구현

    이번 글에서는 C 프로그램 안에 포함된 토큰(Token)을 자동으로 감지하는 프로그램을 만들어 보겠습니다. 이 과정은 컴파일러가 소스 코드를 처리할 때 수행하는 어휘 분석(Lexical Analysis) 단계에 해당하며, 실제 컴파일러 내부에서 동작하는 원리와 같습니다.어휘 분석기(Lexical Analyzer)는 컴파일러의 앞부분을 담당하는 모듈로, 소스 코드에서 토큰을 하나씩 추출하여 그다음 단계인 구문 분석기(Syntax Analyzer)에 전달하는 역할을 합니다.토큰이란 무엇인가?토큰은 프로그램 코드를 구성하는 가장 작은 의

  16. C 언어로 구현하는 행렬 사슬 곱셈(Matrix Chain Multiplication) 최적화 프로그램

    이 글에서는 행렬들의 배열이 주어졌을 때, 곱셈 연산 횟수를 최소화하는 순서를 찾는 행렬 사슬 곱셈(Matrix Chain Multiplication) C 프로그램을 다룹니다.행렬 배열은 n개의 요소로 구성되며, 각 행렬의 크기는 arr[i-1] × arr[i] 형태로 정의됩니다. 즉, 인접한 두 요소가 하나의 행렬의 행과 열 개수를 나타냅니다.문제 이해하기예시를 통해 문제를 살펴보겠습니다.입력array[] = {3, 4, 5, 6}설명위 배열로 만들어지는 행렬들은 다음과 같습니다.Mat1 = 3×4, Mat2 = 4×5, Mat3

  17. C 언어로 디렉터리의 모든 파일과 하위 디렉터리 목록 출력하기

    이 글에서는 하나의 디렉터리가 주어졌을 때, 해당 디렉터리 안의 모든 파일과 하위 디렉터리를 나열하는 C 프로그램을 작성하는 방법을 알아봅니다.디렉터리(directory)란 여러 개의 파일이 저장되는 공간 또는 위치를 의미합니다.하위 디렉터리(subdirectory)는 루트 디렉터리 내부에 존재하는 디렉터리로, 그 안에 또 다른 하위 디렉터리를 중첩하여 가질 수도 있습니다.C 언어에서는 <dirent.h> 헤더 파일에서 제공하는 함수들을 사용하면 디렉터리의 모든 파일과 하위 디렉터리를 아주 간단하게 나열할 수 있습니다.주

  18. 주어진 문자열의 모든 순열을 출력하는 C++ 프로그램

    개요이 문제에서는 하나의 문자열이 주어지며, 우리의 과제는 해당 문자열의 모든 순열(permutation)을 출력하는 프로그램을 작성하는 것입니다.이 프로그램은 주어진 문자열로 만들 수 있는 가능한 모든 조합을 찾아 화면에 출력합니다.순열(Permutation)이란 객체의 모든 구성 요소를 가능한 모든 순서로 배열하는 것을 의미합니다.문제를 더 잘 이해하기 위해 예제를 살펴보겠습니다.입력xyz출력xyz, xzy, yxz, yzx, zxy, zyx설명위 결과는 주어진 문자열의 모든 순열을 순서대로 나열한 것입니다.문제 해결 접근 방식

  19. C언어로 환경 변수(Environment Variable) 출력하기

    개요 이 글에서는 C 언어를 사용하여 시스템의 환경 변수(Environment Variable)를 출력하는 프로그램을 작성하는 방법을 알아봅니다. 환경 변수는 운영체제에서 실행 중인 프로세스의 동작 방식에 영향을 미칠 수 있는 전역 변수입니다. 프로그램은 이 값을 참조하여 시스템 정보, 실행 경로, 사용자 설정 등을 확인할 수 있습니다. 환경 변수란? 환경 변수는 운영체제가 프로세스에 전달하는 키-값(Key=Value) 형태의 문자열 데이터로, 주로 다음과 같은 용도로 활용됩니다. 실행 파일 검색 경로(PATH) 등 시스템 경로

  20. 반복문(루프) 없이 숫자 시리즈를 출력하는 C 프로그램

    문제 개요이번 문제에서는 두 개의 숫자 N과 K가 주어지며, 어떤 종류의 반복문(for, while 등)도 사용하지 않고 특정 숫자 시리즈를 출력하는 프로그램을 작성하는 것이 목표입니다.출력해야 할 시리즈의 규칙은 다음과 같습니다.n부터 시작하여 값이 0 또는 음수가 될 때까지 k씩 감소합니다.값이 0 이하가 되면 방향을 바꿔 다시 n에 도달할 때까지 k씩 증가합니다.이 전체 과정에서 반복문은 일절 사용할 수 없습니다.입력 예시n = 12 , k = 3출력 예시12 9 6 3 0 3 6 9 12해결 접근 방법: 재귀(Recursio

Total 1443 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:47/73  20-컴퓨터/Page Goto:1 41 42 43 44 45 46 47 48 49 50 51 52 53