목차:
*문자열의 정의
*문자열 상수
* 문자 입출력 라이브러리
* 문자열 입출력 라이브러리 함수
* 문자 처리 라이브러리 함수
* 문자열 수치 변환
* 문자열의 배열
1.문자열의 정의
정의) 문자들이 여러 개 모인 것( 큰 따옴표 사용)으로 char형 배열로 저장되며 마지막에 NULL이 들어감.
NULL문자(\0): 문자여의 끝을 나타낸다.
-> 문자 배열의 초기화 char str[]="abc" // str라는 문자열 한칸에 하나씩 a, b, c \0 이 들어감
-> 문자열의 출력 char str[]="abc"
printf("%s",str) // %s= 문자열 형태로 입력함 , str자체가 주소여서 &안붙임
예제#1
#include<stdio.h>
int main(void)
{
char str1[] = "the capital city of korea";
printf("%s",str1);
return 0;
}
->strcpy() : 문자열을 문자배열에 복사하는 함수
ex) strcpy(str_1,str_2); or strcpy(str_1,"Hello");
#define _CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h> // strcpy 함수가 선언된 헤더 파일
int main()
{
char s1[10] = "Hello"; // 크기가 10인 char형 배열을 선언하고 문자열 할당
char s2[10]; // 크기가 10인 char형 배열을 선언
strcpy(s2, s1); // s1의 문자열을 s2로 복사
printf("%s\n", s2); // Hello
return 0;
}
2. 문자열 상수
char *p ="HelloWorld"; // 의미 : HelloWorld라는 문자열 상수의 주소를 p에 할당함.
#include <stdio.h>
int main()
{
char* p = "HelloWorld"; //HelloWorld라는 주소가 p에할당 됨
printf("%s\n", p);
p = "Welcome to C World"; //Welcome to C World라는 주소가 p에할당 됨
printf("%s\n", p);
p = "Goodbye"; //Goodbye라는 주소가 p에할당 됨
printf("%s\n", p);
return 0;
}
3. 문자 입출력 라이브러리
입출력 함수 | 설명 |
ch= getchar(); 아래와 동일 scanf("%c",&ch); |
하나의 문자를 읽어서 반환함(문자 입력 함수) |
putchar(ch); 아래와 동일 printf("%c",ch); |
변수 ch에 저장된 문자를 출력함(문자 출력 함수) |
getch() | 하나의 문자를 읽어서 반환함(버퍼를 사용 안함) <conio.h>필요 |
putch() | 변수c에 저장된 문자를 출력한다(버퍼를 사용 안함) <conio.h>필요 |
scanf("%c",&ch); | 하나의 문자를 읽어서 변수ch에 저장함 |
printf("%c",ch); | 변수ch에 저장된 문자를 출력함 |
tip) 버퍼란? 키보드에 입력받은 임시의 값들로, 엔터를 눌러야 프로그램으로 들어감.
#include <stdio.h>
int main () {
char ch;
printf("Enter character: ");
ch = getchar();
printf("Character entered: ");
putchar(ch);
printf("\n");
return(0);
}
>>>
Enter character: b
Character entered: b
>>>
abc
b
4.문자열 입출력 라이브러리 함수
입출력 함수 | 설명 |
scanf("%s",s) | 문자열을 읽어서 문자배열 s[]에 저장 |
print("%s",s) | 배열 s[]에 저장되어 있는 문자열을 출력한다. |
gets_s(char,int) | 한줄의 문자열을 읽어서 문자 배열 s[]에 저장함. (스페이스도 입력받음) |
puts(char) | 배열 s[]에 저장되어 있는 한 줄의 문자열을 출력함. (스페이스도 출력됨) |
syntax_ex) char buf[100];
get_s(buf, 100);
puts(buf);
#include <Stdio.h>
int main(void)
{
char name[100];
char address[100];
printf("이름을 입력하세요:");
gets_s(name, 100);
printf("현재 거주하는 주소를 입력하세요:");
gets_s(address, 100);
puts(name);
puts(address);
return 0;
}
>>>
이름을 입력하세요:홍길동
현재 거주하는 주소를 입력하세요:서울특별시 강남구
홍길동
서울특별시 강남구
5. 문자 처리 라이브러리 함수 :문자를 검사하거나 문자를 변환한다.
//strcpy예시
#include <Stdio.h>
int main(void)
{
char dst[6];
char src[6] = "Hello";
strcpy(dst, src);
printf(dst);
return 0;
}
>>>
Hello
6. 문자열 수치 변환
->문자열 "36.5"와 수치값 36.5는 다르게 저장됨. (문자열은 하나하나 저장됨,수치값은 통째로 저장됨)
버퍼에서 값을 받아옴 | 역할 |
sprintf(str,"%f",&v); | 문자열을 숫자로 바꿔줌 |
sscanf(str,"%f",&v); | 숫자를 문자열로 바꿔줌 |
#include <Stdio.h>
int main(void)
{
char s[] = "100";
int value;
sscanf_s(s, "%d", &value); //버퍼로 부터 데이터를 읽어옴 , %d type으로 읽고 value에 값을 할당함.
printf("%d\n", value);
return 0;
}
>>>
100
7. 문자열의 배열
(1) 문자열의 배열
(2) 문자 포인터 배열(문자열의 길이가 상관없음으로 효율적으로 쓸 수 있다.)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int i;
char fruits[3][20];
for (i = 0; i < 3; i++) {
printf("과일 이름을 입력하시오: ", fruits[i]);
scanf(" % s", fruits[i]);
}
for (i = 0; i < 3; i++)
printf("%d번째 과일: %s \n", i, fruits[i]);
return 0;
}