[2025.03.11] Ch.04_문자열과 입출력 포맷

2025. 3. 11. 19:11·C/본수업
학습목표
함수 : strlen()
키워드 : const
문자열
문자열을 만들고 저장하는 방법
scanf()와 printf()를 사용하여 문자열을 읽고 출력하는 방법
strlen() 함수를 사용하여 문자열의 길이를 알아내는 방법
C 전처리기의 #define 지시자와 ANSI C의 const 변경자를 사용하여 기호 상수를 만드는 방법

 

 

이번 chapter에서는 문자열과 문자열 입출력에 대해서 배움!

오늘부터는 진짜 내가 수업 내용을 잘 이해하고 있는게 맞는지에 대해 살펴보기 위해 내 머릿속에서 무작정 작성해보겠음!!!!!

 

[문자열: 개요]

★ char형 배열과 널 문자

  • '문자'와 '문자열'은 다름!! 
  • ex) char a = 'a' 와 char b[] = "b" 는 다름!!!! 
  • 작은 따옴표(' ')를 쓰면 이것은 '문자' 하나임.
  • 큰 따옴표(" ")를 쓰면 이것은 '문자열'임! 여기에 문자가 1개 들어있어도 이건 문.자.열.
  • 문자열을 선언하는 방법
    • char a[7] = "Polibo"    ==>   Polibo는 6자리인데, 왜 7을 썼냐? 이것은 C언어에서 문자열을 담을때(?) 문자 + null(\0)을 담기 때문!!!! 문자열의 끝이라고 알려주는? 그런거라고 했던 것 같음. 그래서 문자열 수에 맞춰 선언하고 싶으면 '문자열의 자릿수 + 1' 로 적어야함!
    • char a[] = "Polibo"   ==>   대괄호의 숫자를 비워주면 그냥 알아서 적당히 생섬됨. 선언 및 초기화 단계에는 아무것도 안써도 된다고 함.
    • char a[10] = "Polibo"   ==>   문자 갯수 모르겠으면 그냥 냅다 적당히 크게 하면됨!! 내가 작게 해봤는데 작으면 문자열이 커서 안들어간다고 error 발생함!! 그치만 이것도 문제가 있음! 10자리 중 채워진 곳을 제외한 자리에는 쓰레깃값이 들어감 ㅠ.ㅠ
    • 그니까 모르겠다 싶으면 넉넉하게 주던가 비워주던가!! 
  • 한글은 3바이트라서 좀 다르다고 함. 정확하게는 모르겠지만,,, 그래서 한글은 되도록 사용하지말자,,,ㅠ
  • 쓸거면 한글만! 써야함,,, 왜냐면 한글이랑 다른건 바이트 수가 달라서 섞어쓰면 프로그램이 굉장히 복잡해질거임...

 

 

 

★ strlen() 함수

  • Python에서는 len()이라는 함수를 사용해서 변수의 길이를 알 수 있었음.
  • C에서는 strlen()을 써서 문자열의 길이를 문자의 수로 알 수 있음.
  • sizeof()를 써서 계산하면 null(\0) 자리까지 +1로 나오는데, strlen()을 쓰면 딱 문자의 수만큼 출력됨.
  • 단, 한글은 쫌 다름,,, 3바이트,,,, 그래서 한글은 되도록 사용하지 않는걸루,,,, 한글 특수문자(띄어쓰기 포함), 영어, 숫자 섞어쓰면 완전 노답일듯

 

[상수와 C 전처리기]

  • 상수는 const를 써서 선언한다고 배웠음. 상수는 변하지 않는 수이기 때문에, 프로그램 내에 값이 변하게 되는 문장이 있으면 error 발생!! 주의!! 
  • 전처리기는 상수와 비슷한(?) 성질을 가진 느낌!
  • 전처리기는 #define으로 정의? 선언?함. 그리고 등호(=), 세미콜론(;) 절대 적으면 안되심!
#define 변수명 값
  • 수업시간에 교수님께서 들어주신 예) #include PI 3.141592
  • const랑 비슷하게 프로그램의 제일 앞쪽에 이런식으로 선언하면, 프로그램에 쓰인 PI라는 변수에는 모두 3.141592 라는 값을 대입한다는 것임!! 
  • 그리고 교수님께서 전처리기에 상수를 표현하고 싶으면 변수명을 대문자로 적으라고 하셨음. 이거는 거의 통용되는 것 같음.
  • const를 쓰는 것보다 전처리기로 해주는게 눈에 더 잘 들어올 것 같음.

 

 

★ 명단 상수의 사용

  • 오늘 수업시간에  limits.h 를 사용해봄.
#include <limits.h>
  • stdio.h 말고 다른 헤더파일을 사용해 본것은 처음임. 이 헤더파일에는 정수형 크기 관련된 상수들이 들어있었음.
  • 지금 사용하고 있는 환경에서의 변수의 제한 크기(?)를 알아야할 때 사용하면 편할것 같음. 
  • 변수명이 직관적이라,, ㅎ

 

 

[printf()와 scanf() 완전 정복]

★ printf()

  • printf() 함수는 앞에서도 계속 사용해봐서 이제는 f 붙이는게 좀 익숙해졌음 ㅎㅎㅎ
  • 그동안은 %d(정수형), %f(실수형)을 주로 사용했었음.
  • 그럼!! 문자, 문자열은 어떤 것을 쓰느냐? 문자는 %c, 문자열은 %s를 사용함.

 

 

★ scanf()

  • scanf() 함수도 printf() 함수와 더불어서 계속해서 사용해왔음. 
  • 근데, 문자열에서 scanf() 함수 쓰는 방법에 대반전이 있음!!!!!!
  • 뭐냐면,,,, &를 안써,,,,, 대박적,,,, 이제는 다 헷갈릴것 같은데 ㅠㅠㅠ 안까먹게 공부 열심히 합시다!
#include <stdio.h>

int main()
{
    char name[10];
    printf("이름을 입력해주세요. : ");
    scanf("%s", name);

    printf("당신의 이름은 %s 입니다.\n", name);
    return 0;
}

 

 

 

 

★ printf()와 scanf()에서의 * 변경자

  • 이 부분은 잘 이해가 안가서 단원 연습 문제를 풀고 교수님 코드와 비교해봤을 때 교수님께서 이걸 사용하셔서 그거 보고 이해함!! 다행히 교수님께서 잘 이해하고 있다고 해주셨음... ㅠㅠ
  • 역시 책으로 보는 것보다 직접 사용해보는게 백배 천배 나음 징짜로!

 

 

 

오늘은 진짜 그냥 내 머릿속에 있는 내용을 막 써내려가봤당! (단원 이름, 제목 그런건 책 봄ㅎ)
쓰면서 잘 모르는 부분은 검색도 해보고 코드 보면서 다시 상기시켜보고 하니까 조금씩 더 잘 이해가 가는중!!!
앞으로 블로그는 이런식으로 작성할 예정!
그니까 다들 내 글 너무 믿지마,,,,, 틀린게 많을게야,,,,, 핫

그럼 이제 안녕~
오늘 컨디션 난조로 나는 일찍 가본다!

 

'C > 본수업' 카테고리의 다른 글

[2025.03.12] Ch.05_연산자, 표현식, 문장_연습문제  (0) 2025.03.12
[2025.03.11] Ch.05_연산자, 표현식, 문장  (0) 2025.03.12
[2025.03.11] Ch.03_데이터와 C_연습문제  (0) 2025.03.11
[2025.03.10] Ch.03_데이터와 C  (0) 2025.03.10
[2025.03.10] Ch.02_C 첫걸음  (0) 2025.03.10
'C/본수업' 카테고리의 다른 글
  • [2025.03.12] Ch.05_연산자, 표현식, 문장_연습문제
  • [2025.03.11] Ch.05_연산자, 표현식, 문장
  • [2025.03.11] Ch.03_데이터와 C_연습문제
  • [2025.03.10] Ch.03_데이터와 C
polibo
polibo
Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
  • polibo
    Polibo와 개발 콩나무 키우기
    polibo
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • Python (23)
      • C (32)
        • 본수업 (19)
        • 예습 (7)
        • 개인프로젝트01 - 로또 (3)
        • 개인프로젝트02 - 복켓몬 키우기 (2)
        • 개인프로젝트03 - 김복천국 POS기 (1)
        • 팀프로젝트01 - 용사 복이의 대모험 RPG (0)
        • 팀프로젝트02 - 메일 프로그램 (0)
      • TCP_IP (0)
      • DB (1)
      • C++ (7)
        • 개인프로젝트01 - 숫자야구 (0)
      • QT (1)
        • 개인프로젝트01 - 숫자야구 (0)
        • 팀프로젝트01 - 키오스크 (1)
        • 팀프로젝트02 - 퐘퐘이 (0)
        • 팀프로젝트03 - 개발의 민족 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩
    순서도
    c언어 scanf
    C
    for문
    파이썬반복문
    파이썬게임
    문자열
    else if
    c우선순위
    반복문
    c언어
    Python
    파이썬
    if문
    파이썬예제
    while문
    조건문
    파이썬 숫자야구
    파이썬조건문
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
polibo
[2025.03.11] Ch.04_문자열과 입출력 포맷
상단으로

티스토리툴바