C언어 - 문자열을 정수로, 정수를 문자열로 바꾸기

2022. 12. 10. 01:32·C프로그래밍/개인 공부

프로그래밍을 하다보면 문자열을 정수/실수로 바꾸거나 정수/실수를 문자열로 바꿔야하는 경우가 존재한다.

atoi, atof 함수사용, sscanf, sprintf 함수를 사용하는 방법이 있다.


sscanf, sprintf사용

 

1)sscanf() : 문자열로부터 읽어서 지정된 형식에 따라 변수에 저장한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(void)
{
    char s1[] = "100 200 300";
    char s2[20];
    int value;
 
    sscanf(s1, "%d", &value); //s1에서 읽어서 %d형식으로 value에 저장
    printf("%d", value); //value를 출력
 
    return 0;
}
Colored by Color Scripter
cs

설명) 문자열 s1을 선언과 동시에 초기화 해준다. sscanf()를 이용해서 s1에서 문자열을 읽어서 변수value에 저장하고 출력을 해본다. 문자열 100과 정수100은 엄연히 다르다! 우리가 처음 scanf를 배울땐 저장소에 우리의 키보드입력을 받는 것으로 생각을 했다. sscanf에서는 문자열 s1에서 입력을 받는것으로 생각을 하면 편하다.

s1의 첫 토큰값인 100이 나온다.

2)sprintf() : 변수에 저장된 값을 지정된 형식에 따라 문자배열에 저장한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main(void) {
    char s1[] = "100 200 300";
    char s2[20];
    int value;
 
    sscanf(s1, "%d", &value); //s1에서 읽어서 value에 정수로 저장
    printf("%d\n", value); //value출력
 
    sprintf(s2, "%d", value); //정수 value를 읽어서 문자열 s2에 저장
    printf("%s\n", s2); //문자열 s2출력
 
    return 0;
}
Colored by Color Scripter
cs

설명) sscanf()를 이용해 s1의 문자열을 읽어서 정수형태로 value에 저장했다. 그리고 저장된 value를 sprintf()를 이용해서 s2문자열에 저장했다. 그리고 문자열 s2를 출력했다.


 

atoi, atof함수사용

 

1) atoi() : 문자열을 정수로 바꾼다! (array to int 이렇게 알면 이해가 쉽습니다.)

2) atof() : 문자열을 실수로 바꾼다! (array to float)

 

간단한 예제를 살펴봅시다.(너무 쉬움)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    char s1[] = "100 200 300";
    char s2[] = "4.3";
 
    int i;
    double d;
 
    i = atoi(s1);
    d = atof(s2);
 
    printf("%d\n", i);
    printf("%f\n", d);
    printf("%f\n", i + d);
 
    return 0;
}
cs

설명) atoi함수로 s1문자열을 정수로 바꾸고 i에 저장한다. atof함수로 s2문자열을 실수로 바꾸고 d로 저장한다. 그리고 출력해본다.

 

'C프로그래밍 > 개인 공부' 카테고리의 다른 글

C언어 - 구조체안에 문자배열? or 문자형을 가르키는 포인터?  (0) 2022.12.11
C언어 - 구조체와 포인터  (0) 2022.12.10
C언어 - 포인터의 기초  (0) 2022.11.20
C언어 - 스트림과 파일 입출력 기초(쓰기와 삭제)  (0) 2022.11.02
C언어 - 10진수를 2진수로 바꾸기(재귀함수)  (1) 2022.10.13
'C프로그래밍/개인 공부' 카테고리의 다른 글
  • C언어 - 구조체안에 문자배열? or 문자형을 가르키는 포인터?
  • C언어 - 구조체와 포인터
  • C언어 - 포인터의 기초
  • C언어 - 스트림과 파일 입출력 기초(쓰기와 삭제)
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    토발즈
    드라이버 분석
    순환
    소수
    Qualcomm
    Branch
    버퍼
    자료구조
    백준
    리눅스
    커널
    C++
    c언어
    시스템콜
    스택
    피보나치
    앤드류모튼
    arm
    rubikpi3
    commit
    커널 기여
    동적메모리
    포인터
    INIT
    rubik pi
    yolo
    Git
    이진 트리
    파일 입출력
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
C언어 - 문자열을 정수로, 정수를 문자열로 바꾸기
상단으로

티스토리툴바