728x90
- 아스키코드표(출처 : 코딩도장)
- 문자열(string) : 문자들이 여러 개 모인 것
- 문자는 ' (작은 따옴표)로 표현
- 문자열은 " (큰 따옴표)로 표현
- 문자열 변수 : 변경 가능한 문자열을 저장할 수 있는 변수
💡 NULL문자( '\0' )
: 문자열의 끝을 나타낸다.
- 문자열은 어디서 종료되는지 알 수 없으므로 표시해준다.
Ex1. 문자열 출력(1)
#include <stdio.h>
int main(void)
{
int i = 0;
char str[4];
str[0] = 'A';
str[1] = 'B';
str[2] = 'C';
str[3] = '\0';
while(str[i] != 0){
printf("%c %d %s\n", str[i], str[i], str);
i++;
}
return 0;
}
🌟 문자열을 생성할 때, 만들고자 하는 문자의 길이보다 큰 크기의 배열을 할당한다.
- 맨 마지막에 '\0' 문자의 자리 고려
- 만약 마지막에 NULL문자를 넣어주지 않으면 쓰레기 값이 할당되어 오류가 발생한다.
문자열 초기화
char str[4] = {'a', 'b', 'c', '\0'};
char str[4] = "abc";
char str[4] = "abcdef"; // ERROR! (NULL값 할당 X)
char str[6] = "abc"; // str[3] ~ str[5]은 모두 NULL로 할당
char str[4] = ""; // str[0] ~ str[3] 모두 NULL 할당
char str[] = "abc"; // 배열의 크기를 지정해주지 않아도 자동으로 크기 할당
문자열 출력
char str[] = "abc";
printf("%s", str);
char str[] = "abc";
printf(str); // 배열명으로 문자열 출력 가능
Ex2. 문자열 출력(2)
#include <stdio.h>
int main(void)
{
char str1[6] = "Seoul";
char str2[3] = {'i', 's', '\0'};
char str3[] = "the capital city of Korea.";
printf("%s %s %s", str1, str2, str3);
return 0;
}
Ex3. strlen() 구현 (문자열 길이 구하는 함수)
#include <stdio.h>
int strlen(char *str){
int len = 0;
while(*str++)
len++;
return len;
}
int main(void)
{
char str[] = "Hello C Programming!";
printf("%s의 길이는 %d입니다.", str, strlen(str));
return 0;
}
🧚♀️어려운 개념(정확히 이해하기)🧚♀️ 문자열 상수
- "Hello World!" 와 같이 프로그램 소스 안에 포함된 문자열
- 문자열 상수는 텍스트 세그먼트(text segment) 라 불리는 특수한 메모리 영역에 저장
- 길이를 변경할 수 있는 문자열
<데이터 세그먼트 영역>
- 값을 변경할 수 있는 메모리 영역
<텍스트 세그먼트 영역>
- 값을 읽기만 하고 변경할 수는 없는 메모리 영역
- 포인터 변수를 이용하여 문자열 상수를 저장하면 실질적인 배열 상태는 아니지만 데이터를 읽어 올때는 배열처럼 사용이 가능하다.
#include <stdio.h>
int main(void) {
char A[30] = "C language is easy";
char B[30];
char *P = "C language is hard";
printf("A[30]=%s \n", A);
printf("B[30]=%s \n", B);
printf("P=%s \n", P);
// 이처럼 배열 자체는 아니지만
// 데이터를 읽어올 때는 배열처럼 사용가능하다!
return 0;
}
- 문자열 상수의 경우 배열 형식으로 제어하려고 하면 에러가 발생한다!
#include <stdio.h>
int main(void)
{
char *p = "Hello World!";
printf("%s\n", p);
p = "Welcome to C World!";
printf("%s\n", p);
p = "Goodbye";
printf(p);
// p[0] = 'a';
// ERROR!
return 0;
}
아래 노션 페이지에 C 공부 내용에 대해 업로드 합니다!
수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑
개발 환경
작성 플랫폼
728x90
'🧑💻 Language > C·C++' 카테고리의 다른 글
[C 이론] 15. 표준 입출력 (0) | 2021.06.22 |
---|---|
[C 이론] 14. 문자와 문자열(2) (0) | 2021.06.05 |
[C 이론] 12. 포인터(2) (0) | 2021.06.01 |
[C 이론] 11. 포인터(1) (0) | 2021.06.01 |
[C 이론] 10. 배열 (0) | 2021.05.26 |