반응형

scanf함수가 오작동할 때 아래 참고.

https://ansan-survivor.tistory.com/899

 

[Visual Studio 2019] 비주얼 스튜디오 2019 scanf_s 오류, scanf 사용하기 변경

예전에는 scanf 를 상용함에 있어 문제가 없었는데, 비쥬얼스튜디오가 계속업그레이드가 되면서 scanf_s를 사용하지 않으면 오류를 일으킨다. 따라서 이 에러를 해제 시키고 예전처럼 scanf를 사용

ansan-survivor.tistory.com

 

c언어에서 기본적으로 scanf함수를 이용해 유저가 값을 입력하면 ascii 코드로 들어간다.

즉, 만약 1을 입력하면 실제 정수(int) 1이 아니고, "1"의 ascii 코드인 0x31 (Hex코드) 가 들어가게 된다.

출처 : https://shaeod.tistory.com/228 (이재욱님이 만든 ASCII Table - 아스키코드표 이미지입니다.)

그러나 입력한 값을 연산하기 위해서는 실제 int 타입 또는 float 타입으로 변경하여 진행해야 한다.

아래 코드는 입력받은 ascii를 int나, float로 변환시켜주는 예제 코드이다.

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

/*
	atoi 함수,  atoi 함수,  atof함수
	함수 원형:
	int atoi(const char * str);			Aschii코드 -> int
	iong atol(const char * str);		Aschii코드 -> long
	double atof(const char * str);		Aschii코드 -> float  변환
	※ 주의!
		이 함수들은 모두 stdlib.h 에 정의되어 있으므로 불러와야 함 !!!!!!!!!!!!!!
*/

//예제.
int main()
{
	char str[20];
	printf("정수입력: ");
	scanf("%s", str);

	printf("%d \n", atoi(str));

	printf("실수입력: ");
	scanf("%s", str);

	printf("%g \n", atof(str));

	return 0;
}
반응형

(결과)

유저가 정수와 실수를 입력하면 해당 값이 

 

 

 

반응형

+ Recent posts