문자열 (= 문자의 배열)
- 문자배열의 특징
1. 문자의 끝을 알려준다. 문자열의 끝에 null(=0)을 저장해줘야 함.
2. char 형 사용. (1byte) : 문자(아스키코드)는 0 ~ 127까지이므로 1byte로 충분.
- 문자열 선언 : char 배열명[배열크기]
- 문자열의 끝 : null charater (0)
- 배열의 크기 : 문자열의 길이 + 1 (null을 넣어야하기 때문에)
#include
#define MAX 100
int main(){
int i = 0;
//문자열 초기화1
char str[MAX] = {72, 101, 108, 108, 111, 0}; //Hello의 ascii code
char *p_str = str; //배열의 이름은 주소, 주소는 포인터에 담는다.
//문자열 초기화2
char str2[MAX] = {'H', 'e', 'l', 'l', 'o', '\0'};
//문자열 초기화
char str3[] = {'H', 'e', 'l', 'l', 'o', '\0'};
//문자열 초기화4
char str4[MAX] = "Hello";
//문자열 초기화5
char str5[] = "Hello";
//문자열 초기화6
char str6[MAX] = {0, };
//문자열 초기화7
char str7[MAX] = "";
//string의 size는 null을 고려해야 한다. 실제 보이는 갯수+1
printf("sizeof(str2) %d\n", sizeof(str2));
printf("sizeof(str3) %d\n", sizeof(str3)); //null은 compiler가 넣어준다!
printf("sizeof(str5) %d\n", sizeof(str5));
//출력1
for(i=0; i < MAX; i++){
printf("%c", str[i]); //int지만 ascii code이므로 %c로 할 때 문자 출력
}
printf("\n");
//출력2
for(i=0; i < MAX; i++){
printf("%d", str2[i]); //char는 1byte정수이므로 %d로 할 때 정수 출력
}
printf("\n");
//출력3
for(i=0; i < sizeof(str3); i++){
printf("%c", str3[i]);
}
printf("\n");
/////////출력4: string이 0(null)으로 끝나는 성질을 활용
for(i=0; str[i] !=0; i++){
printf("%d", str[i]);
}
printf("\n");
//출력5
//pointer, *p_str를 사용해서 Hello를 출력
for(i=0; p_str[i] !=0; i++){
printf("%c", p_str[i]);
}
printf("\n");
//출력6
//*사용해서 출력
for(i=0; *(p_str+i) !=0; i++){
printf("%c", *(p_str+i));
}
printf("\n");
//////////////////출력7 p_str++을 사용
printf(" p_str++을 사용한 경우1\n");
for(p_str = str ; *p_str !=0; p_str++){
printf("%c", *(p_str));
} // 가장 좋은 식.
printf(" \np_str++을 사용한 경우2\n");
p_str = str;
for(; *p_str !=0;){
printf("%c", *(p_str++));
}
printf("\n");
printf(" p_str++을 사용한 경우3\n");
p_str = str;
while(*p_str !=0 ){
printf("%c", *(p_str++));
} // for문을 while문 처럼 썼을 때
printf("\n");
printf("%s\n", str); //형식지정자 중에 string을 출력하는 형식지정자: %s
}
'C언어 > 복습' 카테고리의 다른 글
[C언어]DAY14_배열포인터 (0) | 2020.02.05 |
---|---|
[C언어]DAY13_문자열 응용, 다차원 배열 (0) | 2020.02.05 |
[C언어]DAY11_1차배열 포인터의 사용예 (내림차순 정리) (0) | 2020.02.01 |
[C언어]DAY10_2차원 배열 (0) | 2020.02.01 |
[C언어]DAY8, 9_포인터, 배열이름의 의미와 인덱스 의미, 포인터와 배열이름 (0) | 2020.01.30 |