본문 바로가기

C언어/복습

[C언어]DAY12_문자열

 문자열 (= 문자의 배열)

- 문자배열의 특징
   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


}