개발자_이훈규
천천히, 빠르게. 개발자의 Repository
개발자_이훈규
전체 방문자
오늘
어제
  • 분류 전체보기 (473)
    • 티스토리 (4)
    • 개발자 뉴스 (2)
    • 소프트웨어 (203)
      • C (7)
      • c++ (25)
      • Objective-C (3)
      • Do it! 반응형 웹디자인 (4)
      • openGL (8)
      • Java (24)
      • Jni (3)
      • Android (9)
      • Wordpress (2)
      • 버그 만난 후 느낀점 (2)
      • Git (3)
      • node js (2)
      • window tablet (1)
      • HTML (3)
      • javascript (3)
      • perl (1)
      • AngularJS (0)
      • JSON (0)
      • Docker (3)
      • python (5)
      • jQuery (1)
      • MFC (4)
      • cocos studio (6)
      • Golang (1)
      • SQLite3 (0)
      • Spring Boot (8)
      • thymeleaf (0)
      • Django (0)
      • iOS (3)
      • skia (0)
      • VBA (0)
      • PHP (2)
      • Oracle (1)
      • JSP (0)
      • R (0)
    • TCP IP (2)
    • 금융 (0)
      • 금융 Study (0)
      • 금융 Archive (0)
      • 금융 Article (0)
    • 개인 프로젝트 (7)
      • gif 홈페이지 만들기 (0)
      • study app만들기 (0)
      • 크롤러 만들기 (1)
      • 카툰 홈페이지 만들기 (1)
      • 외주 홈페이지 만들기 (3)
      • 웹 홈페이지 만들기 (0)
      • 미디어 서버 만들기 (0)
      • 소개팅 어플 만들기 (0)
      • 인스타그램 풀스택 클론 코딩(인강 노트) (0)
      • 주식 모의거래 만들기 (1)
    • html php mysql (0)
    • node.Js (2)
    • 일상 (2)
    • 빈공간 uml 공부 (0)
    • Ubuntu(linux) (12)
    • 맥OS (10)
      • android 설치하기 (2)
    • Programming quizzes (0)
    • IoT (구 유비쿼터스) (16)
      • 라즈베리 파이 (11)
      • 아두이노 (5)
    • 하드웨어 (5)
      • 아수스 비보탭 노트8 asus vivotap no.. (2)
      • 크레마 카르타 (3)
    • 분석할 문장, 구문, 코드 (0)
    • 키보드 (1)
      • 해피해킹 (1)
    • 코드 라이언 (0)
    • 전자기기 (4)
    • Ted (0)
    • NAS (0)
    • 알고리즘 (0)
    • 연합인포맥스 (0)
    • 이벤트 응모함 (4)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • install
  • C++
  • Java
  • 설명
  • 개발
  • C
  • 코드
  • 에러
  • 예제
  • Python
  • error
  • CODE
  • 방법
  • ubuntu
  • 우분투
  • 설치
  • 소스
  • Example
  • 라즈베리 파이
  • GIT

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
개발자_이훈규

천천히, 빠르게. 개발자의 Repository

소프트웨어/c++

[펌] C 프로그래밍 문자열 비교 함수 (strcmp())

2014. 12. 16. 16:55


출처 : http://ra2kstar.tistory.com/85



C 프로그래밍 문자열 비교 함수 (strcmp())



두 문자열을 비교하기 위해서 어떻게 하면 될까. 

JAVA의 경우 equals() 를 이용하면 true, false 값을 얻어 올 수 있지만.. c 에서도 그런 것이 있을까? 


물론 C에서도 두 문자열을 비교하는 함수는 존재하며, 그 종류도 다양한다. 


  strcmp() 

기능 

두 문자열을 비교 

기본형 

int strcmp(const char *s1, const char *s2);

s1 : 문자열

s2 : 문자열 

반환값 

s1>s2 : 양수 , s1==s2 : 0 , s1<s2 : 음수

헤더 

string.h


strcmp()는 문자열 비교 함수 중에서 가장 많이 사용될 것이라 생각되는 함수이다. 기본적으로 두 문자열이 같은지를 확인할 때 사용된다. 

다음은 두개의 파일에서 문자열을 입력받아, 배열에 저장한 후, 두 문자열을 비교하여 다른 문자열만 출력하는 소스이다. 


  소스예제 

#include <stdio.h>

#include <string.h>


#define MAX 1024



int retToken(char* ori[], char* ptr);

int inputFile(char* source, char*arr[]);



main(){

        int index_ori, index_temp, data;

        char* ori[MAX];

        char* temp[MAX];


        //함수를 이용한 배열에 값 입력하기

        index_ori = inputFile("temp1.txt", ori);

        index_temp = inputFile("temp2.txt", temp);


        for(data = 0 ; data < index_ori ; data++){

                // 두 텍스트를 비교하여 다르면 출력

                if(strcmp(ori[data] , temp[data]) !=0 ){

                        printf("%s \t %s \n " , ori[data], temp[data]);

                }

        }

}


// 파일 입력 함수

int inputFile(char* source, char* arr[]){

        FILE *fp = fopen(source , "r");

        int buf_size = MAX*MAX;

        char* inp = malloc(buf_size);

        int     index = 0;


        while(fgets(inp,buf_size, fp)){

                index = retToken(arr, inp);

        }

        fclose(fp);

        return index;

}


// 배열에 값 입력하는 함수

int retToken(char* ori[] , char *inp){

        int i = 0;

        char* ptr = strtok(inp, ";");


        while(ptr != NULL){

                ori[i] = ptr;

                ptr = strtok(NULL, ";");

                i++;

        }

        return i;

}


  결과 화면 


strcmp()외에 문자열을 비교하는 함수에 대해 더 알아 보겠다. 

strncmp()의 경우, 처음 n개의 문자만 비교하게 된다 .


  strncmp()

기능 

두 문자열의 n개의 문자를 비교

기본형 

int strncmp(const char *sq, const char *s2, size_t n);

s1 : 문자열

s2 : 문자열

n : 비교할 문자의 개수 

반환값 

s1>s2 : 양수 , s1 == s2 : 0 , s1<s2 : 음수

헤더 

string.h


strcmp()와 strncmp()의 경우는 대소문자를 구별하지만, 대소문자를 구별하지 않고 비교할 수 있는 함수도 있다. 


  strcasecmp()

기능 

대소문자를 구별하지 않고 두 문자열을 비교 

기본형 

int strcasecmp(const char *s1, const char *s2); 

s1: 문자열

s2: 문자열 

반환값 

s1>s2 : 양수 , s1 == s2 : 0 , s1<s2 : 음수

해더 

strcmp()와 같음



  strncasecmp()

기능 

대소문자를 구별하지 않고 두 문자열의 n개의 문자를 비교

기본형 

int strncasecmp(const char *sq, const char *s2, size_t n);

s1 : 문자열

s2 : 문자열

n : 비교할 문자의 개수 

반환값 

s1>s2 : 양수 , s1 == s2 : 0 , s1<s2 : 음수

헤더 

strcmp()와 같음


저작자표시 비영리 (새창열림)

'소프트웨어 > c++' 카테고리의 다른 글

상속에 대해서  (0) 2015.01.14
함수의 괄호 뒤에 const를 넣는 이유에 대해서  (0) 2014.12.17
printf에서 %d %09d %19d의 차이에 대해서  (0) 2014.11.18
[c++] snprintf, sprintf 예제  (0) 2014.11.18
2차배열 동적 할당, 교환하기 등.  (0) 2014.11.14
    '소프트웨어/c++' 카테고리의 다른 글
    • 상속에 대해서
    • 함수의 괄호 뒤에 const를 넣는 이유에 대해서
    • printf에서 %d %09d %19d의 차이에 대해서
    • [c++] snprintf, sprintf 예제
    개발자_이훈규
    개발자_이훈규
    혼자 꽁양꽁양 개발하면서 놀아요~ - 노트같은 블로그

    티스토리툴바