독학으로 배우는 C언어 013 문자열 데이터의 출력
Contents
c언어에서는 단일 문자를 기억하는 변수와 문자열을 기억하는 변수의 선언 형태가 조금 다르다. 문자형 변수는 char로 선언하고 단 한 개 문자만 기억하는 것을 뜻하며 여러 문자(문자열)를 기억시키려면 변수명 앞에 * 를 붙여 *ss처럼 선언한다.
* 를 변수명 앞에 붙이는 것을 포인터라 하며 포인터에 대해서는 다음에 자세히 다루기로 하자. 문자열을 처리하는 방법 중에는 배열을 이용하는 방법도 있다.
1. 문자열 처리 형식 지정자
C언어에서 문자와 문자열은 다르다고 했다. 출력할 때도 다른 형식 지정자를 사용하는데 문자는 %c 문자열은 %s를 사용한다.
실습 1: 문자열의 출력
다음의 출력하는 프로그램을 작성하여 ex037.c 저장하고 실행해 보자.
#include <stdio.h>
int main(void)
{
printf("%c 는 하나의 문자\n",'k');
printf("%s 는 문자열\n", "korea");
printf("%c 는 문자 %s 는 문자열",'k',"korea");
return 0;
}
◉ 설명 : 행 설명
4: 하나의 문자를 출력할 때는 형식 지정자 %c를 사용한다.
문자는 ‘ ’로 묶어준다.
5: 문자열을 출력할 때는 형식 지정자 %c를 사용한다.
문자열은 “ ”로 묶어준다.
2. 포인터를 이용한 문자열 사용
C언어에서 문자열은 상당히 복잡한 과정으로 처리된다. 지금은 문자열을 포인터라는 방법을 사용하여 이렇게 처리하는 것이라고만 알고 있자.
실습 1: 문자열 포인터 변수 사용 출력
다음의 출력하는 프로그램을 작성하여 ex038.c 저장하고 실행해 보자.
#include <stdio.h>
int main(void)
{
char lettre1 = 'I',
lettre2 = 'C',
*string1 = "learn",
*string2 = "program";
printf("%c %s %c %s\n", lettre1, string1, lettre2, string2);
return 0;
}
◉ 설명 : 행 설명
4: 문자와 문자열은 자료형 char으로 사용한다.
*는 포인터를 의미하는데 지금은 아래 내용처럼 기억하자
‘변수를 선언할 때 앞에 *를 붙이면 문자열 변수로 사용되며 변수에 대입시킬 문자는 “ ”로 묶는다.’
변수 선언 방법 | 변수명 예 | 대입 예 | |
문자 | char 변수명 | ttt | ttt='a' |
문자열 | char *변수명 | *sss | sss="korea" |
3. %s 형식 지정자의 응용
%20s 20 칸을 확보하고 오른쪽부터 채워진다.
%20.7s 20 칸을 확보하고 7글자만 오른쪽에 출력
%-20.7s 20 칸을 확보하고 7글자만 왼쪽에 출력
실습 1: %s를 사용한 출력
다음의 출력하는 프로그램을 작성하여 ex039.c 저장하고 실행해 보자.
#include <stdio.h>
int main(void)
{
char *name, *sch;
int j = 95;
name = "홍길동";
sch = "대한";
printf("===========================\n");
printf("이 름 학교 점수 \n");
printf("===========================\n");
printf("%s%10s%10d\n", name, sch, j);
printf("\n");
return 0;
}
문제 : This is a computer 라는 문장을 단어별로 변수에 기억시키고 출력하는 프로그램을 완성하라.
#include <stdio.h> int main(void) { char a; char ( ) a='a'; b= ( ) ; c="is"; d="computer"; printf("%s %s %c %s\n",b,c,a,d); return 0; } |
출력결과 This is a computer |
4. 배열을 사용한 문자열 처리
배열이라는 개념도 프로그램 언어에서 중요한 개념이다. 그래서 뒤에서 자세히 다룰 것이다. 지금은 문자열을 저장하고 출력하는 정도의 용도로의 사용법만 알아보자.
실습 1: 배열을 이용한 문자열 출력
다음의 출력하는 프로그램을 작성하여 ex040.c 저장하고 실행해 보자.
#include <stdio.h>
int main(void)
{
char lettre1 = 'I',
lettre2 = 'C',
string1[6] = "learn",
string2[8] = "program";
printf("%c %s %c %s\n", lettre1, string1, lettre2, string2);
return 0;
}
◉ 설명 : 행 설명
위 프로그램은 포인터를 사용한 ex038을 배열로 문자열 처리하기 위해 수정한 프로그램이다.
다른 부분이 있다면
포인터로 문자열을 처리할 때는 *string1 = "learn", 이었는데
배열로 문자열 처리할 때는 string1[6] = "learn", 이다.
포인터에서 앞쪽에 *을 사용했는데 배열에서는 뒤쪽에 [6]을 붙었다.
[6] 의 의미는 문자열 길이 + 1이다.
왜 1을 더했냐면
C언어 컴파일러가 배열로 문자열을 처리할 때에는 문자열 마지막에 한 개의 널 문자(null character)를 자동으로 넣어주기 때문이다. 이 부분도 배열을 정식으로 다룰 때 자세하게 설명하기로 하자. 지금은 배열로 문자열을 처리할 때에는 문자열 길이 + 1 크기 만큼 숫자를 [ ]안에 넣어서 사용하는 정도만 알아두자.
배열을 이용한 문자열 처리
char 배열이름[문자열 길이+ 1] = "문자열"; |
'C 프로그래밍' 카테고리의 다른 글
독학으로 배우는 C언어 015 숫자 자료의 입력 (2) | 2024.07.14 |
---|---|
독학으로 배우는 C언어 014 문자와 문자열 출력함수 (0) | 2024.07.07 |
독학으로 배우는 C언어 012 자료형과 연산 6 (0) | 2024.06.25 |
독학으로 배우는 C언어 011 자료형과 연산 5 (0) | 2024.06.20 |
독학으로 배우는 C언어 010 자료형과 연산 4 (0) | 2024.06.16 |
댓글