EASY7
[C언어 17강] 두 문자열을 비교하는 strcmp() 본문
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);
}
오늘도 재밌고 중요한 것 배워갑니다~~
이래서 중급언어라고 하는구나~
컴퓨터가 문자배열로 받아서 작동하는구나!!
'개발 공부 > C' 카테고리의 다른 글
[C언어 19강] 이중포인터 (0) | 2016.07.10 |
---|---|
[C언어 18강] 포인터란? (0) | 2016.07.09 |
[C언어 16강] gets()와 scanf() 문자열 입력받기 (0) | 2016.07.08 |
[C언어 15강] 문자열은 배열이다 , strlen (0) | 2016.07.08 |
[C언어 14강] 함수와 배열을 이용한 실습 (0) | 2016.07.08 |