EASY7

[C언어 17강] 두 문자열을 비교하는 strcmp() 본문

개발 공부/C

[C언어 17강] 두 문자열을 비교하는 strcmp()

E.asiest 2016. 7. 9. 00:46

 

Int strcmp(char *str1, char *str2)

두 문자배열이 같은가? 다른가? string compare의 약자이다.

넘겨받은 두 문자열을 비교하여 같으면 0 리턴

0이아니면 다르다는 것인데

str1<str2 이면 음수 리턴 a<b

str1>str2 이면 양수 리턴

 

저기 *포인터 왜쓰는 거지?

 

#include<stdio.h>

#include<string.h>

void main()

{

char sample[50], ex[50];

printf("첫번째 문자열을 입력하세요\n");

gets(sample);

printf("두번째 문자열을 입력하세요\n");

gets(ex);

if (strcmp(sample, ex)==0)

printf("두 문자열이 일치합니다.\n");

else

printf("두 문자열이 일치하지 않습니다.\n");

}

 

gets(arr);

puts(arr);

하면 내가 쳤던 문자열 그대로 출력됨

puts(arr+7); arr은 배열의 첫번째 요소의 주소값이다. index가 0이다.

index가 0+7=7인 곳부터 null이 있기 전까지 문자열을 출력한다.

예를들어 abcdefghijk를 입력했다고 하자

puts(arr); 하면 abcdefghijk이 출력된다.

puts(arr+7); 하면 hijk가 출력된다. h가 index=7이기 때문이다.

 

 

#include<string.h>에 있는 함수들

모두 str로 시작하는군요...

strlen(str); 문자열의 길이를 반환함

strcpy(pDest, pSrc); 문자열을 복사함.

strcat(pDest, pSrc); 문자열을 결합함.

strcmp(str1, str2); 두 문자열을 비교함. 같다면 0반환.

http://studymake.tistory.com/556 출처

 

 

실습 : (홍 길동)성함에서 성을 빼고 출력해보자

#include<stdio.h>

#include<string.h>

void main()

{

char arr[50];

int i; /*선언은 선언끼리 모아주기*/

gets(arr);

 

for (i=0; i<strlen(arr); i++)

{

if(arr[i]==' ')

break;

}

puts(arr+i+1); /*i는 공백이 있는 곳이고 공백 다음부터 출력*/

}

 

strlen은 배열에서 \n을 제외하고 원소의 개수를 세주는데 for문에서는 index가 0부터 길이-1이고 부등호가 < 이기에 저렇게 해줌.

 

 

 

실습 : 하나의 배열 안에서 입력받은 문자열을 거꾸로 출력해보자

#include<stdio.h>

#include<string.h>

void main()

{

char strarr[50], tmp; 이건 배열과 문자형을 동시에 선언했군요.

int i, j;

printf("문자열을 입력\n");

gets(strarr);

for( i=0, j=strlen(strarr)-1 ;i<j;i++ ,j--) /*i와 j는 동시에 작동해야함.*/

{    

tmp=strarr[i];

strarr[i]=strarr[j];

strarr[j]=tmp;

}

 

printf("출력결과 : ");

puts(strarr);

}

 

 

오늘도 재밌고 중요한 것 배워갑니다~~ 

이래서 중급언어라고 하는구나~

컴퓨터가 문자배열로 받아서 작동하는구나!!

 

Comments