728x90
반응형
문자열 저장
문자열의 끝을 알 수 있도록 제일 끝에 항상 널 문자(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() 메소드에서 문자열을 처리하는 원리와 동일하게 동작된다.
함수마다 약간식 처리 방식이 다르니,
사용할 때 이를 참고해서 올바르게 함수를 실행하자.
728x90
반응형
'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 |