출처: https://blog.iroot.kr/341 [RootKR]
우리는 일반적으로 배열의 선언과 동시에 초기화를 합니다. 이유는? 저 방식이 편하니까...
원래는 저렇게 원소를 하나하나 초기화 해야하지만, 선언 당시에는 "~"이런 식으로 초기화가 가능합니다.
뒤에 널문자열이 원칙적으로는 있어야겠지만, 선언과 동시에 빈 곳들은 '\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;
}
|
[c] cp '간단하게' 구현해보기 (0) | 2021.03.30 |
---|---|
unix파일구조, inode, 심볼릭링크(소프트링크), 하드링크 (0) | 2020.09.24 |
[C] 연산자와 결합법칙,우선순위 (0) | 2020.03.01 |
[C]구조체 안에서 정의되지 않은 구조체를 쓰려면? (1) | 2020.02.29 |
[C] 구조체는 어떻게 저장될까? (구조체에서의 패딩) (0) | 2020.02.28 |
댓글 영역