일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- distinct()
- 대칭형 알고리즘
- summarize()
- arrange()
- mutate()
- sample_n()
- groupe_by()
- filter()
- dplyr
- select()
- proc contents
- AES
- samp;e_frac()
- Today
- Total
Gae Ko's Blog
[C] 표준입력함수 scanf() 본문
>> 2주차 과제를 하다가 알게 된 자잘한 것들
scanf
<stdio.h> int scanf( char const * const_Format, .... ) ; |
표준입력(stdin)으로 부터 데이터를 형식에 맞추어 읽어온다.
scanf함수는 표준입력(stdin)으로 부터 데이터를 읽어와 형식(format)문자열에 따라 나머지 인자들이 가리키는 장소에 값을 대입한다. 이때 나머지 인자들은 반드시 할당된 공간을 가리켜야하며 형식 문자열 형식 테그(format tag)가 지정하는 바에 따라 대응되는 인자들이 가리키는 공간에 값이 대입된다.
( 포인터를 사용하는 경우 예시 ) // &를 붙이면 안되는 이유를 생각하자
1 2 3 4 5 6 7 8 | void AppIO_in_linearEquation ( float* p_c0, float* p_c1 ) { printf("1 차항의 계수를 입력하시오: ") ; scanf("%f", p_c1) ; printf("상수항의 계수를 입력하시오: ") ; scanf("%f", p_c0) ; } | cs |
scanf 함수의 타입 지정자들
타입 |
대응되는 입력 방식 |
|
c |
단일 문자 |
char |
d |
십진법으로 표현된 정수 |
int |
e / E / f/ g/ G |
부동 소수점 |
float |
o |
8진법으로 표현된 정수 |
int |
s |
문자열 (공백문자를 찾을 때까지 읽어들임) |
char |
u |
부호가 없는 십진법으로 표현된 정수 |
unsigned int |
x / X | 16진법으로 표현된 정수 | int |
예제)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <stdio.h> int main(void) { // 200바이트의 문자열이 저장되는 배열 // 배열의 끝을 알리는 NULL 문자 1개의 공간이 필요하기에 200 + 1 = 201 char s[201]; int i; double d; /* 문자열 입력받기 */ printf("\n\n아무 문자열이나 200바이트까지 입력: "); // "%s" 이렇게 문자열 길이를 지정 않으면 보안에 취약하므로 "%200s" 이렇게 길이 지정. // 또는 안전한 버전인 scanf_s() 를 대신 사용하면 됨. scanf("%200s", s); fflush(stdin); // 입력 버퍼 청소 /* 정수 입력 */ printf("아무 정수 입력: "); // i 가 아닌, &i 이렇게, // 변수의 포인터를 파라미터로 입력해야 합니다. scanf("%d", &i); fflush(stdin); /* 실수 입력 */ printf("아무 실수나 입력: "); scanf("%lf", &d); // "%f"가 아닌 "%lf"라고 해야 함 fflush(stdin); return 0; } | cs |
// 문자열을 입력받는 경우엔 일반 변수와 달리 배열앞에는 &를 붙이지 않는다. (배열도 포인터처럼 주소를 담고 있으므로)
// 공백까지 포함해서 입력받을라면 서식지정자를 "%[^\n]s"와 같이 지정하면 공백까지 포함하여 문자열을 입력받을 수 있음
[참고]
더 자세한 내용은 다음 링크 참고 ☞ http://itguru.tistory.com/36
https://dojang.io/mod/page/view.php?id=336(입력값을 문자열에 저장하기)
'프로그래밍언어 > C' 카테고리의 다른 글
[C] 포인터 (0) | 2018.03.28 |
---|---|
[C] 구조체 (0) | 2018.03.18 |
[C] enum 그리고 enum&typedef (0) | 2018.03.10 |
[C] double형 변수에 대한 절대값 구하기 : fasb() (0) | 2018.03.09 |
[C] Main 함수의 매개변수 (argc, argv) (1) | 2018.01.16 |