스닥
Playground
스닥
전체 방문자
오늘
어제
  • 분류 전체보기 (125)
    • 개발자 기본기 (1)
    • Swift 아키텍처 (6)
    • iOS 개발 (55)
      • Swift (12)
      • UIKit (17)
      • SwiftUI (9)
      • CoreData (9)
      • MusicKit (4)
      • WebKit (2)
      • 개발 환경 (0)
      • WatchOS (2)
    • 애플 개발자 아카데미 (4)
    • 막 쓰는 개발일지 (0)
    • 운영체제 (4)
    • 네트워크, 서버 (16)
      • Network (9)
      • Server (7)
    • 알고리즘 (8)
    • C언어 (7)
      • 함수 (7)
    • 하루 이야기 (23)

블로그 메뉴

  • GitHub계정
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자료구조
  • 알고리즘
  • 서버
  • C 언어
  • SWIFT
  • dfs
  • struct class 성능
  • ios rendering
  • Server
  • docker
  • swift performance
  • ip주소
  • 문자열 복사
  • core data
  • 너비 우선
  • Core Animation
  • 도커
  • BFS
  • 깊이 우선
  • 트리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
스닥

Playground

C언어/함수

memcmp

2020. 8. 10. 13:33

헤더 파일

<string.h>

사용 목적

두개의 메모리 주소값을 지정한 길이 만큼 비교

프로토타입과 매개변수

int memcmp(const void *s1, const void *s2, size_t n);

1. const void *s1 = 비교할 메모리 A

2. const void *s2 = 비교할 메모리 B

3. size_t n = 비교할 길이(byte 단위)

 

반환값

1. 비교하는 동안 두 메모리가 완벽하게 일치하면 '0'을 반환

2. 두 메모리가 일치하지 않은 지점이 있으면 *s1 - *s2를 반환

함수의 원리

이해를 돕기 위해 같은 동작을 하는 함수를 만든 것입니다.

int		ft_memcmp(const void *s1, const void *s2, size_t n)
{
	unsigned int	i;

	i = 0;
	while (i < n) // 지정한 n 길이만큼 메모리를 하나씩 비교
	{
		if (*(char *)s1 != *(char *)s2) // 메모리의 값이 다르면
			return (*(unsigned char *)s1 - *(unsigned char *)s2); 
            // 그 메모리의 값의 차를 반환 (*s1 - *s2)
		i++;
		s1++;
		s2++;
	}
	return (0);
}

사용 예시

#include <string.h>
#include <stdio.h>

int		main(void)
{
		char s1[] = "Life Is Fortytwo";
		char s2[] = "Life is Fortytwo"; // 대문자 I와 소문자 i의 차이가 있음

		printf("Return Value is = %d\n", memcmp(s1, s2, 20));
		return(0);
}
Return Value is = -32

'C언어 > 함수' 카테고리의 다른 글

memset  (0) 2020.09.25
memmove  (0) 2020.08.10
memccpy  (0) 2020.08.10
memcpy  (0) 2020.08.10
memchr  (0) 2020.08.10
strlen  (0) 2020.08.10
    스닥
    스닥
    https://github.com/feldblume5263

    티스토리툴바