C 언어 : 문자열 변환 라이브러리 함수
글 작성자: _rian
ASCII To ~ 함수들
scanf() 함수로 정수 또는 실수를 입력받을 때 사용자는 "12", "3.14"와 같은 문자열을 입력하는 것이다.
이러한 문자열들은 scanf()함수에서 12, 3.14와 같은 숫자로 변형되어 저장된다.
프로그램에서 다음 함수들을 사용하여 문자열을 숫자로 변환할 수 있다.
1
2
3 |
a = atoi(s); //정수 문자열 s를 정수(int 형)로 변환한다.
b = atol(s); //정수 문자열 s를 정수(long 형)로 변환한다.
c = atof(s); //정수 문자열 s를 실수(float 형)로 변환한다. |
cs |
이 함수들을 사용하려면 다음과 같이 헤더파일 <stdlib.h>를 삽입해야 한다.
1 |
#include <stdlib.h> |
cs |
아래는 문자열을 숫자로 변환하는 프로그램이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
#include <stdio.h>
#include <stdlib.h>
int main() {
char s[10];
int i;
double r;
printf("정수를 입력하세요 : ");
scanf("%s", s); //문자열 입력
i = atoi(s); //문자열을 정수로 변환
printf(" > %d\n", i);
} |
cs |
sprintf() 함수와 sscanf() 함수
sprint() : 출력을 표준 출력으로 내보내는 것 대신에 문자열 s에 저장함
sscanf() : 입력을 표준입력에서 받는 것 대신에 문자열 s에서 입력받음.
아래는 세 문자열을 합쳐 url 변수에 넣은 것이다.
1 |
sprintf(url, "%s%s%s", protocol, host, path); |
cs |
sprintf()와 sscanf()를 사용한 간단한 예제를 살펴보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
#include <stdio.h>
#include <stdlib.h>
int main() {
char a[] = "129.41";
char b[] = "25.83";
char c[15]; //결과 문자열 저장용
double x, y, z;
sscanf(a, "%lf", &x); //문자열을 실수로 변환
sscanf(a, "%lf", &y);
z = x * y; //실수 계산
sprintf(c, "%9.2f", z); //실수를 문자열로 변환
printf("곱셈 결과 = %s\n", c); // 결과 문자열 출력
return 0;
} |
cs |
이 프로그램은 문자열로 포현된 두 개의 숫자를 실수로 변환하여 곱셈을 한 후 결과를 다시 문자열로 변환하여 출력한다.
atoi() 함수 직접 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
#include <stdio.h>
int atoi(char s[]);
int main() {
printf("%d\n", atoi("12345")); //결과 12345
printf("%d\n", atoi("12ab")); //결과 12
printf("%d\n", atoi("ab")); //결과 0
return 0;
}
int atoi(char s[]) {
int number = 0;
int i;
for (i = 0; s[i] != '\0'; i++) {
if (s[i]<'0' || s[i]>'9') //숫자가 아니면 종료
break;
number = 10 * number + (s[i] - '0');
}
return number;
} |
cs |
표준 라이브러리에서 제공하는 atoi() 함수 대신에 직접 작성한 atoi() 함수를 사용하였으며 헤더파일 <stdlib.h>를 포함하지 않았다.
atoi() 함수는 정수에서 사용하지 않는 문자가 입력되면 그 시점까지의 입력된 정수값을 반환한다.
'Computer Engineering > C' 카테고리의 다른 글
포인터란? - call by reference와 call by value의 차이 (0) | 2019.06.14 |
---|---|
C 언어 : 문자 처리 함수 (0) | 2018.12.15 |
C언어 : 특정 단어가 입력될 때 까지 단어를 입력받기 (0) | 2018.12.15 |
문자열 처리 함수 strlen과 strcpy 만들기 (0) | 2018.12.15 |
C언어 : 스택(stack) , 배열을 사용해 스택 구현하기 (0) | 2018.12.15 |
댓글
이 글 공유하기
다른 글
-
포인터란? - call by reference와 call by value의 차이
포인터란? - call by reference와 call by value의 차이
2019.06.14 -
C 언어 : 문자 처리 함수
C 언어 : 문자 처리 함수
2018.12.15 -
C언어 : 특정 단어가 입력될 때 까지 단어를 입력받기
C언어 : 특정 단어가 입력될 때 까지 단어를 입력받기
2018.12.15 -
문자열 처리 함수 strlen과 strcpy 만들기
문자열 처리 함수 strlen과 strcpy 만들기
2018.12.15