[CS 1-2 | 시스템 프로그래밍 기초] 시스템 프로그래밍 기초 - #16 [문자열]

2022. 11. 15. 17:36·CS 대학강의
반응형

문자열 저장

문자열의 끝을 알 수 있도록 제일 끝에 항상 널 문자(NULL Character) '\0'을 자동으로 붙인다.

따라서, C언어 컴파일러는 "\0" Null 문자를 만날 때까지 문자열을 인식한다.

(\0 Null 값이 문자열 하나를 끝나는 의미)

 

큰 따옴표로 둘러싸인 것은 문자열로 간주하며, 컴파일러가 자동으로 끝에 '\0'을 붙인다.

반면에 문자는 '\0'을 붙이지 않는다.

 

문자열 선언 - 문자열 사용 시 유의사항

char str[10] = {'h', 'a', 'n', 'y', 'a', 'n', 'g'}; // 오류가 안남

– 위 문장은 뒤에 '\0'을 붙이지 않았지만, 원하는 만큼만 출력됨

– 배열 선언 시 남는 공간은 아스키코드 0으로 채워지며, 0이 NULL을 의미하기 때문이다.

– 하지만 이런 방법에 의존하기보다 문자열의 끝을 명확하게 표현하는 것이 더 좋은 습관

 

 

문자열 활용 예시

#include <stdio.h>
#include <string.h>
int main(){
	char str[] ="apple";
	printf("size: %lu, ", sizeof(str));
	printf("length: %lu, ", strlen(str));
	printf("string: %s\n", str);
	
    str[3] = '\0';
	printf("size: %lu, ", sizeof(str));
	printf("length: %lu, ", strlen(str));
	printf("string: %s\n", str);
	return 0;
}

 

 

문자열 상수

예를 들어 char *p = "apple"; 같이 선언하면

     – 컴파일러는 문자열을 코드 세그먼트(code segment)에 저장 – 첫 문자를 가리키는 포인터를 반환

     – 반환된 포인터가 좌변의 문자형 포인터 p에 대입됨

 

     – printf("%p", p); 하면 문자열의 시작 주소를 출력

     – printf("%c", *p);하면 첫 문자인 'a' 출력

 

 

 

 

C언어의 메모리 영역이
어디에 올라와서 처리되는지를 이해해야 코드를 제대로 구성할 수 있다.

메모리는
스택영역
코드영역에 따라서 수정할 수 있는지 여부가 갈린다.

 

문자열 입력 - scanf

스캔 세트를 이용해서 선별적으로 문자를 읽을 수 있다.
원하는 형태로 문자를 받아올 수 있다.

 

문자열 입력 - scanf 예제

getchar() 메소드를 사용해 입력버퍼를 제거해줌.

 

 

 

파일을 이용한 문자열 입출력 - fgets

결국, fgets를 처리하는 원리도

scanf() 메소드에서 문자열을 처리하는 원리와 동일하게 동작된다.

 

함수마다 약간식 처리 방식이 다르니,
사용할 때 이를 참고해서 올바르게 함수를 실행하자.

 

 

반응형

'CS 대학강의' 카테고리의 다른 글

[CS 1-2 | 오픈소스 SW 기초] 사물인터넷 7주차  (0) 2022.11.17
[CS 1-2 | 프로그램 설계 방법론] JAVA로 블랙잭 프로그램 제작  (0) 2022.11.16
[CS 1-2 | 시스템 프로그래밍 기초] 함수 포인터 실습 15주차  (0) 2022.11.11
[CS 1-2 | 프로그램 설계 방법론] Java GUI로 슬라이드 퍼즐게임 제작 13주차  (0) 2022.11.11
[CS 1-2 | 대학생을 위한 실용금융] 신용관리 10주차  (0) 2022.11.09
'CS 대학강의' 카테고리의 다른 글
  • [CS 1-2 | 오픈소스 SW 기초] 사물인터넷 7주차
  • [CS 1-2 | 프로그램 설계 방법론] JAVA로 블랙잭 프로그램 제작
  • [CS 1-2 | 시스템 프로그래밍 기초] 함수 포인터 실습 15주차
  • [CS 1-2 | 프로그램 설계 방법론] Java GUI로 슬라이드 퍼즐게임 제작 13주차
욱22
욱22
우기의 모든 걸 기록합니다.
    반응형
  • 욱22
    우기 때 만나요
    욱22
  • 전체
    오늘
    어제
    • 우기 때 만나요 (263)
      • 💭 경험&생각 (48)
      • 🌤 일상&취미 (12)
      • 📖 북로그 (29)
      • 백엔드 개발 (27)
      • 📚 스터디 (33)
        • 비즈니스 (0)
        • 프론트엔드 (9)
        • 디자인 (4)
        • 데이터베이스 (8)
        • 데이터 분석 (0)
        • 인공지능 (2)
        • 알고리즘 (10)
      • CS 대학강의 (78)
      • 🌤 프로젝트 (0)
        • UMC 2기: 동네 (15)
        • UMC 3기: 당신의 발자취 (6)
        • ERICA: 스타트업톤 (9)
        • ERICA: 또래튜터링 (2)
      • 🌤 대외활동 (5)
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • 태그

    디자인
    java
    드럼
    창업
    AWS
    대학생 대외활동
    객체지향 프로그래밍
    드럼 레슨
    대학생 개발 프로젝트
    스폭크루
    자료구조
    백준
    파이썬
    티스토리챌린지
    생각정리
    디자인베이스
    자기계발
    Kotlin
    안드로이드
    오블완
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
욱22
[CS 1-2 | 시스템 프로그래밍 기초] 시스템 프로그래밍 기초 - #16 [문자열]
상단으로

티스토리툴바