오늘은 문자열에 대해 알아보겠습니다.

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이라는 함수를 선언후 결합할 문자열 배열 변수를

작성해 주시고 한번 출력해 보겠습니다.

 

 

문자열이 결합되어 출력이 됩니다.

 

 

'프로그래밍 > C언어' 카테고리의 다른 글

13.포인터  (0) 2018.06.02
12.배열(2)  (0) 2018.05.26
11.배열(1)  (0) 2018.05.25
10.함수(2)  (0) 2018.05.23
09.함수(1)  (0) 2018.05.21
Posted by 갈색족제비
,

 

오늘은 포인터에 대해 간단히 알아보겠습니다.

포인터란 주소를 가지고 있는 변수라고 합니다.

선언 방법은 주석내용 참고 바라며

예제를 한번 작성해 보겠습니다.

 

우선 pnum이라는 포인터 변수를 선언해준후

num이라는 일반 변수를 선언해 준후 값을 할당해줍니다.

 

그후 pnum이라는 포인터 변수에 num의 주소번지값을 저장해줍니다.

 

그후 출력문을 이용해 결과물을 보겠습니다

첫번째 출력물은 num의 값을 출력해줍니다.

두번째 출력물은 num의 주소값을 출력해줍니다.

 

세번째 출력물은 pnum을 출력해주는데

이때 pnum에는 num의 주소값을 저장했기 때문에

num의 주소값이 출력되게 됩니다.

 

네번째 출력물은 pnum을 출력하는데 *이라는게 붙었습니다.

이경우 *은 역참조 연산자라고 해서 포인터 변수에

주소값을 저장한 변수의 값을 가져오는 연산자 입니다.

그래서 *pnum으로 출력할 경우 num의 값이 출력되게 됩니다.

 

 

출력 결과입니다.

첫번째 num의 값 10

두번째 num의 주소값

세번째 num의 주소값

네번째 num의 값 10

잘 출력이 됩니다.

 

 

위 예제에서 설명한 역참조 연산자 입니다.

정수형 변수 su와 포인터 변수 psu를 선언해 줍니다.

그후 su의 주소값을 포인터변수 psu에 저장해 준후

 

psu변수를 출력해줍니다. 근데 출력문에서 %p라는 것에 대해

설명을 드리자면 %p는 포인터변수의 주소값을 출력해주는 출력타입입니다.

그후 역참조 연산자를 이용해 psu변수를 출력해 줍니다.

 

이때는 처음에 할당한 su의 값이 300이었기 때문에

300이라는 값이 나오게 될껍니다.

 

그후 su에 500이라는 값을 할당해준후

출력하니 당연히 500이 나오게 됩니다.

 

그다음 포인터변수에 700이라는 값을

역참조해서 저장해주게 되면

su에 700이라는 값이 저장됩니다.

그 후 *psu라는 포인터 변수와

su라는 변수를 출력하면

각 700 700이라는 값이 나오게 됩니다.

 

 

출력 결과입니다.

 

이번 예제는 포인터변수에 복합대입 연산자를 이용해

예제를 작성해 보았습니다.

 

이번엔 num1과 num2라는 변수를 선언후 각각 100이라는 값을 할당해 줍니다.

그후 pnum이라는 포인터 변수를 선언해준후

 

포인터변수에 num1변수의 주소값을 저장후

역참조 하여 연산을 해주고 저장하게 되면

num1에는 100+30이 된 130이라는 값이 저장되게 됩니다.

 

그후 num2의 주소값을 저장후

똑같이 역참조 하여 연산을 해주고 저장하면

100-40이 연산이 된 60이라는 값이 저장되게 됩니다.

 

그후 결과물을 출력해 보겠습니다.

 

num1은 130 num2는 60이 나오는걸 알수있습니다.

 

 

'프로그래밍 > C언어' 카테고리의 다른 글

14.String  (0) 2018.06.03
12.배열(2)  (0) 2018.05.26
11.배열(1)  (0) 2018.05.25
10.함수(2)  (0) 2018.05.23
09.함수(1)  (0) 2018.05.21
Posted by 갈색족제비
,

 

오늘은 배열 2번째 입니다.

첫번째로 배열을 이용한 정렬작업을 해보겠습니다.

 

 

배열을 선언해 준 후

반복문을 실행해줄 i,j변수와

값을 임시저장해줄 temp 변수를 선언해 줍니다.

 

그후 scanf 함수를 이용해 5개의 값을 입력받아 주고

 

다중 for문과 if문을 이용해

큰값이 앞에오도록 작성해 줍니다.

그후 출력 결과를 보도록 하겠습니다.

 

 

출력 결과입니다.

마구잡이로 입력했던 처음과 달리

큰숫자부터 앞에오게 정렬이 되었습니다.

 

 

 

다음 예제입니다.

이번에는 그냥 배열이 아닌

다차원 배열입니다.

그냥 배열이 직선이였다면

다차원 배열은 사각형 처럼 입체적이라 보시면 됩니다.

 

다차원 배열에 초기값을 할당하는 법은

int arr[3][4] =

{ {11, 12, 13, 14},

{21, 22, 23, 24},

{31, 32, 33, 34} };

이런식으로도 가능합니다.

 

다중반복문을 이용해 다차원 배열에 값을 할당해준후

그 값을 출력해 보겠습니다.

 

 

출력 결과입니다.

정상적으로 나오는걸 알수 있습니다.

 

다음 예제입니다.

3행4열짜리 다차원 배열을 선언후

각 행과 열에 키보드로 입력받은 숫자를

입력후 출력하는 예제입니다.

 

일단 배열을 선언해 줍니다.

 

한가지 수를 모든 배열의 저장하려 할때는

한가지 값을 다중for문을 이용하여

배열에 저장해주시면 됩니다.

 

그후 배열마다 입력받은 숫자를 저장하려하면

이것도 다중for문을 이용하여

숫자를 계속 입력해주고 바로바로

배열에 저장해 주시면 됩니다.

 

 

별로 어렵지 않습니다. 다차원 배열을 선언후

다중for문을 이용해 값을 입력하고

값을 출력해주면 쉽게 작성이 가능합니다.

 

그후 출력해보겠습니다.

 

 

위에는 한가지수를 모든배열에 저장한 값입니다.

밑에는 입력받은 수를 배열마다 저장한 결과입니다.

잘 출력이 되는걸 알수있습니다.

 

'프로그래밍 > C언어' 카테고리의 다른 글

14.String  (0) 2018.06.03
13.포인터  (0) 2018.06.02
11.배열(1)  (0) 2018.05.25
10.함수(2)  (0) 2018.05.23
09.함수(1)  (0) 2018.05.21
Posted by 갈색족제비
,