본문 바로가기
IT/C

[C언어] 기초 내용 정리 (C 언어의 기본 구조, 표준 입출력)

by dwoi 2023. 3. 22.

C 언어에 기본 구조에 대해 이해한 내용을 정리한 글

 

목차

     


    C

     

    C, C++ C# Java 파이썬 R과 같은 언어들이 존재.


    프로그램 작성

    C언어 - 2. 프로그램 작성 과정 (velog.io)

    ※ 컴파일러 : C언어로 작성된 걸 0과 1로 구성된 기계어로 바꿔줌.

    1. 인간이 .C로 확장자인 소스파일을 만든다.

    2. 컴파일러를 통해 오브젝트 파일이 생성이 됨 (object 파일, 기계어)

    3. 링커라고 하는 녀석이 링크 작업을 해서 실행파일을 만들고

    4. .exe파일을 실행을 하면 로더가 메모리에다가 .exe파일을 읽어들이고 cpu가 실행을 함.

     


     

    Hello World

    소스 코드

    #include <stdio.h>
    
    int main()
    {
        printf("Hello, C world!\n");
    
        return 0;
    }

     

     

    컴파일 후 링커 후 exe 파일 실행값.

     

    C언어의 특징

    • 이식성과 효율성이 높음
    • 다른 프로그래밍 언어를 배우기에 좋음
    • 지능형 서비스 로봇 제어
    • 절차지향 언어

     


     

    C언어의 구조

    Step1- 주석

    • 주석(Comment) : 메모의 기능, 컴파일러는 주석의 내용을 무시
      • /**/ : 여러 줄
      • // : 한줄씩

     

    • 주석 처리 시 주의사항 : 중복 사용 금

     

    Step2 - 전처리기와 헤더파일

    • 전처리기 - # : 컴파일을 수행하기 전에 먼저 처리하는 기호
    • include : 포함하라는 전처리를 지시
    • 헤더파일 : 확장자 .h를 가지는 파일
    • stdio : 표준 입출력

     

    Step3 -main()함수

    1. main()함수의 호출과 종료는 누가 결정하는가?

     

    1. 소괄호 안에 있는 매개변수를 함수가 받음
    2. 중괄호 안에 있는 함수 내용을 차례대로 실행
    3. 함수 앞에 있는 것이 그것을 받음.
    • int : 정수
    • void : 빈 공간
    • ;(세미 콜론) : 마침표
    • return : 반환과 종료의 의미

    → return 0 : 운영체제에게 0을 반환하고, main() 함수를 종료해라!

    주의 : int로 출력이 될거니 반환하는 값이 정수여야 한다.

     


    표준 입출력

    printf() 함수 : 출력

    특수 문자

     

    printf() : 서식화된 걸 출력하는 함수!

    출력 서식 문자

    // 16진수와 8진수는 음수를 표시할 수 없음.


    • 문자열 : "ㅁㄴㅇㅁㄴㅇ" // 쌍따옴표
    • 문자 : 'A' // 따옴

    출력할 때 화면에 보이는 문자들을 정렬하여 출력할 수도 있음

    필드 폭 지정

    • %05d : 필드 폭을 5칸 확보하고 오른쪽 정렬, 남은 자리 0으로 채움
    • %-5d : 필드 폭을 5칸 확보하고 왼쪽 정렬
    • %+5d :  필드 폭을 5칸 확보하고 오른쪽 정렬, 양수는 + 음수는 - 출력

    한 프로젝트에 여러 개의 main 함수가 존재하면 오류가 일어남

    이럴 땐 빌드시키지 않을 파일을 제외시키고 컴파일을 돌리면 해결!


    scanf() 함수

    키보드로 데이터를 입력하는 함수

    마찬가지로 stdio.h 헤더파일이 필요

     

    ※ scanf() 함수 사용 시 '경고/에러' 발생

    • scanf_s() 함수를 사용하라고 Vs에서 지속적인 에러가 발생

    해결 방법 1

    • scanf_s()함수를 사용하는 것 / Visual Studio에서만 동작하는 보완을 위해 만든 비표준 함수

    해결 방법 2

    • 전처리기(#)를 사용해서 괜찮다고 알리고 시작하기

     

    scanf()함수의 기본 구조

    • 입력 서식문자
    • 변수
      • 데이터를 저장하는 임시 공간

     

    scanf 함수의 기본 구조

    &a : a라고 만들어진 메모리로 찾아가라. 

     

    scanf("-%d-", &a) :

    위 코드에서 

     

    그냥 정수만 집어넣는게 아니라 -90-으로 입력해줘야 제대로 메모리에 들어가고

    정수만 a라는 메모리에 들어간다고 생각


     

    마무리

    소스 코드를 계속 돌이켜보면서 어떤 구조로 되어있는지 복습하면서 구조를 익히는 것이 필요하다고 판단!

    파이썬에선 input함수 하나 써서 돌리던걸 출력함수와 입력함수를 여러 번  써서 잡아 나가는 과정이 필요했는데

    오히려 더 풀어 쓰니까 어떤 식으로 순서를 짜나가야하는지 순서가 보여서 이에 대해 만족감이 듦.

     

     

     

     

     

    댓글