c언어 위치로 char 배열의 내용을 추출하는 함수 없나요?

jys923의 이미지

for(int i=0;i<20;i++)

{

//status[0]=msg[4];

status[i]=msg[i+4];

}

이렇게 했는데

start end 위치 적고 그냥 추출하는 함수 없나해서요

msg배열의 4~23 까지 추출해서 status에 넣으려합니다.

자바 생각하고 함수 찾아 봤는데 잘못찾겠네요

 의 이미지

C언어의 문자 배열을 쓰시면서 Java의 String을 연상하시면 영 좋지 않습니다.
그런 목적이라면 차라리 C++의 string을 알아보시길.

어쨌든, C 라이브러리 함수를 이용하면 가능해지긴 합니다.

strncpy(status, msg + 4, 20);
status[20] = '\0'; // status가 NULL-Terminated되어야 한다면 반드시 이렇개 해 주어야 합니다.
// 그 경우엔 당연히 status 배열의 크기가 21 이상이어야 하고요.
jys923의 이미지

감사합니다.
그럼 자바는 잊어버리고
C언어 잘하려면 어떤 접근이 좋을까요?

Anti-Lock의 이미지

이 경우에는 memcpy 가 더 적당할것 같습니다.
strncpy 를 쓴다면...
msg가 null로 끝나는 문자열이라는 정보도 없지만,
null을 만나는 순간 복사가 일찍 종료되어 버릴테니까요.