C 메모

char 배열에 문자열 넣기 (strcpy)

빵맨. 2020. 3. 7. 18:27
728x90

com[20]이라는 배열에 'google'이라는 문자열을 대입하고 싶으면

선언과 동시에 

char com[20] = { "google" }; ==> 이것처럼

대입하는 방법이 있다.

 

하지만 코드를 짜다보면 선언과 동시에 문자열을 초기화 해주면서 사용 할 일이 거의 없으므로

선언과 분리되어 문자열을 대입 할 수 있어야 한다.

하지만 com[20] = { "google" }; 과 같이 대입하면 오류가 생긴다.

 

그 이유는

char com[20] 이라고 선언하면 char형(1바이트)을 20개 선언한 것이다.

(com[0], com[1], com[2], ..... com[18], com[19]) : 19까지만 메모리 할당 됨, 20은 할당되지 않음

근데 com[20]이라는 1바이트 변수에 'google'이라는 7바이트(\0 포함)를 대입하면 당연히 오류가 생길 수 밖에 없다.

(애초에 com[20]은 메모리 할당도 되지 않음)

 

 

따라서 선언과 동시에 초기화를 하지 않고 char형 배열에 문자열을 대입하려면

strcpy(주소, 내용); 를 사용하면 대입 할 수 있게 된다.

 

728x90