출처: https://blog.iroot.kr/341 [RootKR] [C] 문자열 배열 초기화

상세 컨텐츠

본문 제목

[C] 문자열 배열 초기화

UNIX&C언어

by QKRM 2020. 3. 1. 20:27

본문

우리는 일반적으로 배열의 선언과 동시에 초기화를 합니다. 이유는? 저 방식이 편하니까...

원래는 저렇게 원소를 하나하나 초기화 해야하지만, 선언 당시에는 "~"이런 식으로 초기화가 가능합니다.

뒤에 널문자열이 원칙적으로는 있어야겠지만, 선언과 동시에 빈 곳들은 '\0'으로 초기화가 되기 때문에 앞 뒤 코드는

실질적으로는 차이가 없습니다.

선언후 c = "QKRM"과 같이 초기화를 하려면 에러를 마주하게 됩니다.

이 에러를 해결하기 위해서는.

 

다음과 같이 일일이 초기화를 해주거나, while문을 통해 하나하나 대입해주면 문자열을 선언한 뒤에

문자열을 대입할 수 있습니다. 하지만 이렇게 매번 복사한다는건 쉬운일이 아닙니다.

그래서 우리는 string.h 에 포함되어있는 strcpy 함수를 사용할 겁니다!

이런식으로 strcpy함수를 통해서 b의 원소들을 c의 원소들로 복사해준다면 선언뒤 대입이 가능합니다!

strcpy는 위에 제가 while문으로 돌린것 처럼 원소를 하나하나 복사해서 대입해주는 함수입니다.

1
2
3
4
5
6
char *strcpy(char *dst, const char *src) {
  char *cp = dst;
  while (*cp++ = *src++)
    ;
  return dst;
}
 

관련글 더보기

댓글 영역