C에서 두 개의 문자열을 연결하는 함수를 작성한다고 가정 해 봅시다. 작성 방법은 다음과 같습니다.
void concat(char s[], char t[]){
int i = 0;
int j = 0;
while (s[i] != '\0'){
i++;
}
while (t[j] != '\0'){
s[i] = t[j];
i++;
j++;
}
s[i] = '\0';
}
그러나 책의 K & R 은 특히 while 루프의 조건 부분에 최대한 포함하여 다르게 구현했습니다.
void concat(char s[], char t[]){
int i, j;
i = j = 0;
while (s[i] != '\0') i++;
while ((s[i++]=t[j++]) != '\0');
}
어떤 방법이 선호됩니까? K & R이하는 방식으로 코드를 작성하도록 권장하거나 권장하지 않습니까? 다른 사람들이 내 버전을 쉽게 읽을 수 있다고 생각합니다.
while (*s++ = *t++);
. 그들의 원래 책은 매우 간결하고 관용적 인 코드를 가지고있었습니다.
'\0'
를 복사하지 않습니다 t
(먼저 while
종료). 메모리 위치가 이미 0이 아닌 경우 결과 s
문자열을 종료하지 않고 그대로 둡니다 '\0'
. 두 번째 코드 블록은 루프 '\0'
를 종료 하기 전에 종료 사본을 만듭니다 while
.