학습목표
함수 : 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 |