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 공부 내용에 대해 업로드 합니다!

수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑

 

 

 

C 언어 이론 정리

조건문, 반복문 사용 시 중괄호로 명령문들 묶어주기 - 명령문 1개일 때 포함 (코드 수정 시 오류 방지)

www.notion.so

 


 

개발 환경

Visual Studio 2019
Visual Studio Code

작성 플랫폼

Notion

 

 

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