본문 바로가기

코드리뷰/C언어 리뷰3

[실전 C언어 코딩 리뷰] - 문자열 복사하기[memcpy() vs strncpy()] C 개발할 때 memcpy와 strncpy 함수의 차이를 정확하게 모른 채 사용하는 경우가 많다. 둘 다 비슷한 결과를 출력되고 성능에도 큰 차이를 느끼지 못하기 때문이다. memcpy 함수가 메모리 자체를 빠른 속도로 복사하기 위해 만들었다면, strncpy 함수는 문자열 자체를 복사하기 위해 만들어졌다. 따라서 주로 이진 데이터는 memcpy 함수를 이용해 처리하고, 일반적인 문자열 처리는 strncpy 함수를 사용한다. memcpy는 레지스터를 사용하므로 처리 속도가 월등히 빠르고, 문자열 종료 문자인 null 여부를 확인하지 않고 정해진 길이 만큼 복사를 한다. 이 부분이 strncpy()와 다른 점이다. 따라서 memcpy 함수를 이용해 문자열을 복사할 경우 종료 문자가 제대로 붙었는지 반드시 .. 2020. 10. 3.
실전 C언어 코딩 리뷰 - 문자열 복사하기[strcpy() vs strncpy()] 자바나 C#계열 언어는 String 자료형이 있어서, 문자 A를 B에 복사한다면 "B = A" 이런 식으로 대입을 한다. 반면 C언어는 String 타입이란 게 없어서 이렇게 대입할 경우 원하는 결과가 나오지 않는다. C언어를 어렵게 생각하게 만드는 부분이기도 하다. 문자열 복사는 strcpy()나 strncpy() 함수를 이용한다. strcpy() 헤더 파일 : string.h #include // src, dest 문자열을 복사하고 문자열(dest)의 시작주소를 리턴한다. char* strcpy(char* dest, const char* src); 두 번째 인자로 전달받은 메모리 주소에 저장된 문자열을 첫 번째 인자로 전달받은 메모리 주소에 복사한다. 순서가 뒤에서 앞으로이다. 실전 예제 : strc.. 2020. 10. 1.
실전 C언어 코딩 리뷰 - 문자열 비교하기(strcmp vs strncmp) 자바나 C#계열 언어와 C언어의 가장 큰 차이점은 문자열 처리 방식이다. 처음 C를 접할 때 가장 이해하기 어려운 부분이기도 하다. C언어에서 문자열은 숫자를 비교하듯 변수 그 자체로 비교할 수 없다. 기본 함수인 strcmp()나 strncmp() 함수를 이용해야 한다. 헤더 파일 : string.h #include // str1, str2 : 비교 문자열 int strcmp(const char* str1, const char* str2); 포인터로 받는 두 개의 문자 str1과 str2를 비교한다. 각 문자열의 첫 번째부터 비교해서 두 문자가 다르거나, NULL을 만날 때까지 비교한다. [비교 결과 ] ▶ 일치 : 0 ▶ 불일치 : 0이 아닌 값 (str1이 크면 0보다 큰 값, 작으면 0보다 작은 .. 2020. 9. 30.