c언어 문자열을 수치로 변환하는 방법 알아보기
네 안녕하세요, 이번 포스팅에서는 문자열을 수치로 변환하는 방법에 대하여 알아보도록 하겠습니다.
우리가 문자열을 처리할 때 때때로 문자열을 수치로써 변환해야 하는 경우도 생깁니다.
제일 대표적인 경우가 숫자 등을 문자열로 변환하는 경우이죠.
그래서 어떤 수치를 문자열로 변환을 하거나,
아니면 그 반대로 문자열을 수치로 변환을 하는 경우에는 어떤 함수를 써야 가능한지 알아보도록 하겠습니다.
그럼 지금부터 함께 보시죠.
1. sscanf(), sprintf()
이 두 함수는 문자열을 수치로 변환 및 수치를 문자열로 변환을 해주는 함수입니다.
예를 들면 이런 경우입니다.
36.5라는 변수가 있다고 칩시다.
그러면 이 36.5는 실수값이기 때문에 문자열과는 다른 수치를 가지고 있죠?
그래서 메모리에 저장이 되는 형태도 다릅니다.
실수값 36.5는 한 공간에 저장이 되는 방면에,
문자열 36.5는 NULL 문자까지 해서 5칸의 메모리를 잡아먹습니다.
그렇기 때문에 형태 자체가 달라서 메모리의 크기도 다르며,
할당되는 인덱스의 값과 개수도 다릅니다.
그래서 이러한 수치를 변환을 하는 경우, 그리고 반대로 수치를 문자열로 변환을 하는 경우에
저 함수들을 씁니다.
각각의 기능은 아래의 표와 같습니다.
함수 | 설명 |
sscanf(s, ...) | 문자열 s로부터 지정된 형식으로 수치를 읽어 변수에 저장 |
sprintf(s, ...) | 변수의 값을 형식 지정자에 따라 문자열 형태로 문자 배열 S에 저장 |
이러한 기능을 가집니다.
그럼 이들을 이용하여 어떤 식으로 쓰는지 직접 보여드리도록 하겠습니다.
#include <stdio.h>
int main()
{
char s[] = "100";
int value;
sscanf(s, "%d", &value); // 형식을 정수형으로 읽어서 value에 저장하여 문자열을 수치로 변환
printf("%d \n", value);
value++;
sprintf(s, "%d", value); // 수치를 읽어와서 문자열의 형태로 다시 변환
printf("%s \n", s);
return 0;
}
이렇게 한 번 작성을 해봤습니다.
해당 과정은 문자열 100에 증가연산을 하여 101을 출력하는 코드인데,
원래대로라면 문자열은 증감연산을 할 수 없는 자료형이지만,
sscanf() 함수를 이용해서 문자열을 정수형으로 수치 변환을 시켜준 후에,
수치가 정수형으로 변환이 된 문자열 변수 100에 증가연산을 한 후,
다시 sprintf() 함수로 정수형 자료형을 문자열로 수치 변환을 시켜서 다시 출력을 해준 겁니다.
그럼 결과를 한 번 보도록 하겠습니다.
100
101
결과 역시 문제없이 잘 나온 것을 볼 수 있습니다.
2. atoi(), atof()
문자열을 정수나 실수로 변환을 하는 경우에는 간단히 전용 함수를 사용하는 경우도 있습니다.
해당 함수들의 기능은 아래의 표와 같습니다.
함수 | 설명 |
int atoi(const char *str); | str을 int 형으로 변환 |
double atof(const char *str); | str을 double 형으로 변환 |
이러한 기능을 가집니다.
또한 이 함수들은 'stdlib.h' 헤더 파일을 전처리기에서 쓰겠다고 선언을 해야 사용이 가능한 함수들입니다.
그럼 이들을 이용하여 코드를 한 번 작성을 해보도록 하겠습니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s1[] = "100";
char s2[] = "12.93";
char buffer[100];
int i;
double d;
double result;
i = atoi(s1); // s1에서 정수 추출
d = atof(s2); // s2에서 실수 추출
result = i + d;
sprintf(buffer, "%f", result);
printf("연산 결과는 %s 입니다.\n", buffer);
return 0;
}
이렇게 한 번 작성을 해봤고요,
결과를 한 번 보도록 하겠습니다.
연산 결과는 112.930000 입니다.
결과도 잘 나온 것을 확인할 수 있습니다.
지금까지 문자열의 수치를 변환하는 방법에 대하여 알아보았는데요,
다음 포스팅에서는 문자열을 여러 개 저장하는 방법에 대하여 알아보도록 하겠습니다.
긴 글 읽어주신 독자분들께 진심으로 감사드립니다~
'c언어' 카테고리의 다른 글
c언어 문자와 문자열을 이용하여 여러 가지 문제 풀기(단어 세기, 영상 파일명 자동 생성하기, 한영사전 구현하기, 메시지 암호화 하기, 행맨 게임 만들기) (2) | 2023.01.09 |
---|---|
c언어 문자열을 여러 개 저장하는 방법에 대하여 알아보기 (0) | 2023.01.06 |
c언어 문자열 처리 라이브러리에 대하여 알아보기 2(문자열 비교하기, 문자 및 문자열 검색하기, 문자열 토큰 분리하기) (0) | 2022.12.30 |
c언어 문자열 처리 라이브러리에 대하여 알아보기 1(문자열의 길이 구하기, 문자열 복사하기, 문자열 연결하기) (0) | 2022.12.29 |
c언어 문자 처리 라이브러리에 대하여 알아보기 (0) | 2022.12.25 |
댓글