fpintf로 문자열을 숫자로 바꾸고 싶었다

honeyricecake·2021년 12월 22일
0

C언어공부

목록 보기
1/10

백준 2908번 상수 문제(https://www.acmicpc.net/problem/2908)를 풀며 처음 atoi함수를 알았는데 그걸 쓰면서 문득 이런 생각이 들었다.

'아 fprintf로 stdin에 문자열을 넣고 그걸 scanf로 정수로 입력을 받으면 문자열을 정수로 변환할 수 있지 않을까?'

[첫 시도]

#include <stdio.h>
#include <stdlib.h>

int main()
{
char array[4];
char brray[4];
int crray[2];
char x, y;
int a, b;

scanf("%s %s", array, brray);

x = array[2];
array[2] = array[0];
array[0] = x;

y = brray[2];
brray[2] = brray[0];
brray[0] = y;

fprintf(stdin, "%s", array);
fprintf(stdin, " ");
fprintf(stdin, "%s", brray);
scanf("%d %d", &a, &b);

if (a > b)
{
	printf("%d", a);
}
else if (b > a)
{
	printf("%d", b);
}
return 0;

}

[두번째 시도]

https://master-hun.tistory.com/7

이걸 읽고 아 stdin의 버퍼 주소를 찾아 거기에 입력을 한 뒤
scanf를 수행한 후 엔터를 누르면 버퍼에 있는 문자열이 입력이 되리라 생각했다.

그런데 마이크로소프트에서 보안상의 이유로 stdin의 버퍼에 접근을 막아놓았더라...

더 알아보니 sscanf라는 함수가 있더라.
내 코드에서 sscanf(array,"%d",&a);
를 하면 array를 간단히 정수 a로 변환할 수 있더라.

[결론]

실패, 그러나 좋은 시도였다.
sscanf라는 새로운 함수도 배웠다.
하지만 난 atoi를 애용할 것이다. ㅎㅎ

0개의 댓글