오늘은 문자열에 대해 알아보겠습니다.
C언어에서 문자열을 출력할때는 char타입을 배열로 선언하여 출력해 줍니다.
char타입의 배열과 크기를 선언해주고 "Hello"라는 문자열을 저장하여 줍니다.
다른 방법으로는 배열선언후 문자열만 저장해주면 크기가 자동으로 잡힙니다.
그후 출력해보겠습니다.
문자열을 저장한대로 출력이 됩니다.
다음 예제입니다.
문자열을 scanf함수를 이용하여 값을 입력받았을때는
공백이 있는곳 까지만 입력이 됩니다.
한번 결과로 보겠습니다.
Hello World라고 중간에 공백을 주니
Hello라고 저장된 값만 나옵니다.
이번엔 HelloWorld라고 공백없이 값을 입력해준 경우입니다.
이경우에는 문제없이 출력이 됩니다.
공백도 출력하는 방법이 있지만 다음예제에서 알려드리겠습니다.
다음 예제입니다.
문자열의 공백까지 입력받고 저장해주는 함수입니다.
gets(문자열배열); 식으로 선언해주시면 됩니다.
한번 출력해 보겠습니다.
Hello World라고 값을 입력한 결과입니다.
Hello World라고 공백까지 포함하여
정상적으로 출력이 됩니다.
다음 예제입니다
이번에는 문자열의 길이를 구하는 함수와
문자열을 비교하여 문자열의 내용이 같은지
아니면 틀린지 확인하는 함수에 대해 알아보겠습니다.
#include<String.h> 를 작성해 줍니다.
그후 두개의 문자열 배열을 만들어 준후 값을 입력해 줍니다.
그다음 strlen이라는 함수를 작성하여 두 문자열의
길이를 확인하는 출력문을 작성해 줍니다.
그후 strcmp라는 문자열 비교 변수를 사용하여
문자열을 비교후 res라는 변수에 값을 저장해 줍니다.
이때 결과값에 따라 값이 반환되는데 반환되는 값은
0, 1, -1이 나올수 있습니다.
한번 결과를 보겠습니다.
"Hello" 와 "Hello" 문자열을 비교한 결과입니다
둘이 같기 때문에 0이라는 값이 리턴되어 출력되었습니다.
결과에 따라 반환되는 값은 어떤값이 반환되는지는
다음 예제에서 보겠습니다.
다음 예제입니다.
strcmp함수를 이용하여 문자열을 비교하는 두번째 예제입니다.
전 예제에서 결과값에 따라 1,0,-1의 값이 리턴된다고 하였는데
문자열의 크기를 아스키 코드 기준으로 비교하였을때
첫번째 문자열이 두번째 문자열보다 크면 1이
첫번째와 두번째 문자열이 같으면 0이
첫번째 문자열보다 두번째 문자열이 크면 -1이라는
값이 리턴값으로 돌아오게 됩니다.
한번 실행해 보겠습니다.
첫번째 문자열에는 abcdefg 라는 값을 넣어줍니다.
두번째 문자열에는 gfedcba 라는 값을 넣어줍니다.
이경우 두번째 문자열이 크기 때문에
-1이라는 값이 리턴되어 res라는 변수에 저장되게 됩니다.
다음 예제입니다.
이번에는 문자열을 복사하는 예제입니다.
#include<string.h>작성해주신후 배열 2개를 선언해주시는데
하나는 값을 입력해주고 하나는 선언만 해줍니다
그후 strcpy 함수를 호출하여 괄호안에 복사할 문자열 배열을
앞에 작성해주시고 원본 문자열 배열을 뒤에 작성해 주신후
한번 출력해 보겠습니다.
출력결과입니다. 문자열이 잘 복사되었습니다.
다음 예제입니다
이번에는 문자열을 결합하는 함수입니다
#include<string.h> 작성하여 주시고
각각 문자열 배열을 선언후 문자열을 입력해줍니다.
그후 strcat이라는 함수를 선언후 결합할 문자열 배열 변수를
작성해 주시고 한번 출력해 보겠습니다.
문자열이 결합되어 출력이 됩니다.