연습 1.16 가장긴라인에서 copy함수의 역할과 작동 원리를 모르겠습니다

sh1996 Reply 9 years 32 weeks ago
책에서는 그냥 문장을 저장한다 되있던데 잘 모르겠습니다.
booksky Reply 9 years 32 weeks ago
안녕하세요. 조교 이은헌입니다. 책에 있는 copy 함수는 문자열을 다른 문자열에 복사하는 함수입니다. void copy(char to[], char from[]) { int i; i = 0; while((to[i] = from[i]) != '\0') ++i; } from이라는 문자열에서 to라는 배열에 문자열을 복사하는 것이지요. 예를 들어 from이라는 문자열에 "TEST"라는 문자열이 저장되었다고 가정해보겠습니다. 그렇다면 실제로 from안에는 TEST\0 이렇게 저장이 되어있습니다. 문자열의 마지막 문자 뒤에는 '\0'이 들어가서 이 문자열이 끝남을 알려주기 때문이죠. 그래서 while문을 보면 to[i] = from[i]를 해주는 것으로 from에 있던 문자를 하나 하나씩 to에 입력해주게 됩니다. 그러면 from[0]에 있는T from[1]에 있는 E from[2]에 있는 S from[3]에 있는 T를 하나씩 to에 복사하고, 마지막에 from[4]에 있는 '\0'를 복사하면 while의 조건이 어긋나게 되겠지요. 그러면 반복문을 빠져나가고 함수가 종료되게 됩니다. 그 결과 to에는 from에 있는 것과 같은 "TEST\0"이 저장되게 될 것입니다.