상세 컨텐츠

본문 제목

C 언어 예제, string 문자열 int 형으로 전환하기

컴퓨터 관련/C 언어 예제

by 열정과 함께 2014. 6. 28. 21:32

본문

계산기 예제 만들다가 든 생각이다. 문자열로 쳐 넣은 다음에 고스란히 int 형으로 출력받는 방법이 없을까?


왜 이 생각을 했냐면..... 계산기 예제 만들다가 scanf 를 사용하니까 숫자 하나 쓸 때마다 엔터를 계속 눌러줘야 되잖아? 심지어 소수점 입력 하려니 또 점을 따로 찍는 부분을 만들던가 해야되고..... 이게 무슨 원시적인 상황인가?


그래서 만들어봤다. 입력하고 짠, 하고 엔터만 치면 두다닥 알아서 int 형으로 죄다 전환해 주는 거다. 구조체를 사용한 방법이다. 그러니까 어떻게 만들자는 이야기냐 하면은.......



이렇게 만들자는 뜻이다. 이게 막상 화면으로만 보면 이런 병맛 대체 뭐가 달라진거람 싶겠지만 저기 저 내용이 다 정수부분, 소수 부분 구분해서 구조체로 들어간 거다. 코드를 보면 이해가 빠르리라 생각한다.


#include <stdio.h>

struct Bignum

{

int i_digit[100]; //정수부분이 입력되어 있는 부분

int d_digit[100]; //소수부분이 입력되어 있는 부분

int i_total_digit; //정수부분 총 자리수. 그러니까 위의 그림에 따르면 이 값은 4이다.

int d_total_digit; //소수부분 총 자리수. 위 그림에서는 마찬가지로 4이다.

};

int str_change(char *str, struct Bignum *object);

int main()

{

int i;

i=0;

char str[101];

struct Bignum object; //각 자리수의 숫자들이 입력되어 있는 구조체는 object 구조체로 하였다.

printf("전환하고 싶은 문자열을 입력하십시오. \n");

scanf("%s", str); //숫자를 입력하는 부분. 여기서는 일단 몽땅 char 로 들어간다.

str_change(str, &object);

printf("전환된 문자열은 어떻게 됩니까? \n");

for(i=0;i<object.i_total_digit;i++)

{

printf("%d",object.i_digit[object.i_total_digit-i-1]);

}

printf(".");

for(i=0;i<object.d_total_digit;i++)

{

printf("%d",object.d_digit[object.d_total_digit-i-1]);

}

printf("\n");

return 0;

}

int str_change(char *str, struct Bignum *object)

{

int i,j,l;

i=j=l=0;

object->i_total_digit=0;

object->d_total_digit=0;

while(*str!='.')

{

i++;

str++;

}

j=i;

str=str-i;

i=0;

for(i=0;i<j;i++)

{

object->i_digit[j-i-1]=(int) *str-48;

object->i_total_digit++;

str++;

}

str++;

while(*str)

{

object->d_total_digit++;

l++;

str++;

}

str=str-l;

for(i=0;i<l;i++)

{

object->d_digit[l-i-1]=(int) *str-48;

str++;

}

str=str-object->i_total_digit-object->d_total_digit-1;

l=0;

return 0;

}


이제 이걸 만들었으니 다른 계산기 예제를 만들 때가 된 건가. 계산기 만들러 간다 이제. 참 간단해 보였는데 만드려고 하니까 꽤 골머리 썩었다 그래도.



관련글 더보기

댓글 영역