1. 문자와 문자열
- 문자와 문자열은 다른 개념입니다.
- 문자는 단일 문자를 이야기하며, 문자열은 둘 이상의 결합문자를 이야기 합니다.
2. 문자 입력받기
- C언어에서 문자를 입력받기 위해서는 char 자료형을 이용해야 합니다.
- 서식문자로 %c를 사용합니다.
예시 ) 문자 한개만 입력받기
int main()
{
char c1;
printf("문자를 입력하세요: ");
scanf("%c", &c1); // 문자를 입력받아서 변수에 저장
printf("%c\n", c1); // 변수의 내용을 출력
return 0;
}
예시) scanf 하나로 문자 여러개를 입력받기
- 정수나 실수를 입력 받듯이 %c를 붙여서 입력받으면 c2값은 들어가지 않습니다.
왜냐하면 엔터키나 스페이스도 하나의 문자로 치기 때문에 c2값에는 엔터가 들어가게 되기 때문입니다.
int main(void)
{
char c1, c2;
printf(" 두 문자 입력 : ");
scanf("%c%c", &c1, &c2);
printf(" c1 = %c, c2 = %c \n", c1, c2 );
return 0;
}
위 코드 결과
따라서 이 점을 보완하려면
int main(void)
{
char c1, c2;
printf(" 두 문자 입력 : ");
scanf("%c %c", &c1, &c2);
printf(" c1 = %c, c2 = %c \n", c1, c2 );
return 0;
}
이런 식으로 %c 사이에 공백을 넣어줘야 합니다.
위 코드 결과 :
예시) scanf를 여러번 이용하여 문자 여러개 입력받기
- 이 예시도 마찬가지로 scanf 를 그냥 두번 쓰면 c2에 엔터가 들어갑니다.
int main(void)
{
char a, b;
printf(" 두 문자 입력 : ");
scanf("%c", &a);
scanf("%c", &b);
printf(" a = %c, b = %c \n", a, b); //b값엔 엔터가 들어감
return 0;
}
위 코드 결과
해결방법은 두번째 scanf에서 %c앞에 공백을 넣거나, scanf사이에 getchar()를 넣어주면 됩니다.
* getchar함수는 문자열이나 문자를 입력받습니다. 따라서 scanf 사이에 써주면 getchar에 엔터가 입력받게 됩니다.
int main(void)
{
char a, b;
printf(" 두 문자 입력 : ");
scanf("%c", &a);
getchar();
scanf("%c", &b); //scanf(" %c",&b);
printf(" a = %c, b = %c \n", a, b);
return 0;
}
위 코드 결과
3. 문자열 입력받기
- 문자열을 입력받기위해서는 char형 배열을 선언해야 합니다.
- 문자열은 서식문자로 %s를 사용합니다.
- 문자열의 맨 뒤에는 null문자가 들어갑니다.
* 배열에 "hello" 가 들어갔으면 null문자를 포함해서 배열의 크기가 6이 된다.
예시) 문자열 입력받기
int main()
{
char s1[10]; // 크기가 10인 char형 배열을 선언
printf("문자열을 입력하세요: ");
scanf("%s", s1); // 표준 입력을 받아서 배열 형태의 문자열에 저장
printf("%s\n", s1); // 문자열의 내용을 출력
return 0;
}
ex) 여러 문자열 입력받기
int main()
{
char s1[5][100]; // 최대 100길이의 문자를 입력받음.
printf("문자열을 입력하세요: ");
for(int i=0;i<5;i++){
scanf("%s", s1[i]); // 표준 입력을 받아서 배열 형태의 문자열에 저장
}
for(int i=0;i<5;i++){
printf("%s\n", s1[i]); // 문자열의 내용을 출력
}
return 0;
}
* 주의사항 : 이미 선언된 배열에 문자열을 삽입할 수 없습니다.
'Major > C&C++' 카테고리의 다른 글
[C언어] 포인터로 두 변수의 값 서로 바꾸기 (0) | 2021.04.08 |
---|---|
[C언어] 구조체 (0) | 2021.04.08 |
[C언어 복습] 포인터(배열포인터, 포인터배열) (0) | 2021.02.05 |
[C언어 복습] 문자열 (0) | 2021.02.01 |
[C언어 복습] 배열 (0) | 2021.02.01 |