1. 문자 입출력 함수
문자 입출력 함수는 함수 반환형이 int형이다. 그러므로 문자도 정수로 저장된다.
int형으로 하는 이유는 EOF(end of file) 문자를 체크하기 위해서이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h>
int main()
{
int ch;
while (1)
{
ch = getchar();
if (ch == EOF)
break;
putchar(ch);
}
return 0;
}
|
cs |
2. 문자열 입출력 함수
띄어쓰기가 포함된 한 줄을 받고 싶을 때는 gets()를 사용해야 한다.
출력할 때는 puts()를 사용하면 된다.
1
2
3
4
5
6
7
8
9
|
#include <stdio.h>
int main()
{
char address[100];
printf("주소를 입력하시오: ");
gets(address);
puts(address);
return 0;
}
|
cs |
3. 문자열 처리 함수
말을 쉽게 하자면 문자열의 길이를 구하는 함수이다.
이때부터는 헤더에 #include <string.h>가 필요하다.
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <stdio.h>
#include <string.h>
int main()
{
char address[100];
int size;
printf("주소를 입력하시오:");
gets(address);
size = strlen(address);
printf("%d\n", size);
return 0;
}
|
cs |
4. 문자열 복사 함수
문자열 복사 함수의 두 인수는 char형 포인터이다.
b가 가리키는 문자열을 a가 가리키는 배열로 복사하는 함수이다.
( <-- 오른쪽에 있는 문자열을 왼쪽에 있는 문자열로 복사한다.)
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdio.h>
#include <string.h>
int main()
{
char a[10] = "apple";
char b[10] = "pie";
strcpy(a, b);
printf("%s", a);
return 0;
// 답은 pie
}
|
cs |
5. 문자열 연결함수
문자열 연결 함수도 복사 함수와 같은 방향으로 진행된다.
복사 함수는 복사했다면 연결 함수는 오른쪽에 있는 문자열을 왼쪽에 있는 문자열에 연결시킨다.
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdio.h>
#include <string.h>
int main()
{
char a[10] = "apple";
char b[10] = " pie";
strcat(a, b);
printf("%s", a);
return 0;
// 답은 applepie
}
|
cs |
6. 문자열 비교 함수
문자열 비교해서 같으면 0이 반환된다. s1> s2면 양수가 반환된다. s1 <s2면 음수가 반환된다.
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <stdio.h>
#include <string.h>
int main()
{
char a[10] = "a";
char b[10] = "b";
int result;
result = strcmp(a, b);
printf("%d", result);
return 0;
//답은 a가 b보다 작은 아스키 코드를 가지고 있으므로 -1이다.
}
|
cs |
7. 문자열 토큰 분리
문자열 분리 함수는 strtok( char *s(입력 문자열), (분리자)) 이렇게 구성된다.
첫 번째 분리 함수에는 입력 문자열을 넣고 다음 분리 함수부터는 NULL을 넣는다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <stdio.h>
#include <string.h>
int main()
{
char s[] = "manners maketh man";
char *t1, *t2, *t3, *t4;
t1 = strtok(s, " ");
t2 = strtok(NULL, " ");
t3 = strtok(NULL, " ");
t4 = strtok(NULL, " ");
printf("%s\n,%s\n,%s\n,%s\n", t1, t2, t3, t4);
return 0;
/* 답은 manners
maketh
man
NULL */
}
|
cs |
8. 문자열 수치 변환
sscanf와 sprintf 함수가 있다. 이때 앞에 알파벳 s는 string(문자열)이다.
sscanf는 키보드에서 입력받는 대신에 문자열에서 입력받는다.
( 문자열에서 정수 or실수 등등 다른 형식으로 읽어서 뒤에 있는 변수에 저장한다.)
sprintf는 모니터로 출력하는 대신에 문자열로 출력한다.
(변수에 저장된 값을 문자열로 변환해서 뒤에 있는 문자열에 저장한다.)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h>
#include <string.h>
int main()
{
char s1[] = "100";
char s2[30];
int value;
sscanf(s1, "%d", &value); // s1에 있는 100이란 문자를 정수형으로 변환해 value에 저장한다.
printf("%d\n", value);
sprintf(s2, "%d", value); // value에 있는 100이란 정수를 문자열로 변환해 s2에 저장한다.
printf("%s\n", s2);
return 0;
}
|
cs |