fscanf() — 형식화된 데이터 읽기
형식
#include <stdio.h>
int fscanf (FILE *stream, const char *format-string, argument-list);
언어 레벨
ANSI
스레드세이프
예
로케일 감지
이 함수의 작동은 현재 로케일의 LC_CTYPE 및 LC_NUMERIC 범주에 영향을 받을 수 있습니다. LOCALETYPE(*LOCALEUCS2) 또는 LOCALETYPE(*LOCALEUTF)가 컴파일 명령에서 지정되면 작동은 현재 로케일의 LC_UNI_CTYPE 범주에 영향을 받을 수도 있습니다. 자세한 정보는 CCSID 및 로케일 이해의 내용을 참조하십시오.
설명
있는 경우, fscanf() 함수는 지정된 stream의 현재 위치에서 argument-list의 항목에서 지정된 위치로 데이터를 읽습니다. argument-list의 각 항목은 format-string의 양식 지정자에 해당되는 유형의 변수에 대한 포인터여야 합니다.
format-string은 입력 필드에 대한 해석을 제어하고, scanf() 함수에 대한 format-string 인수와 같은 양식과 함수가 있습니다.
리턴값
fscanf() 함수는 성공적으로 변환하고 지정되는 필드의 수를 리턴합니다. 리턴값은 fscanf() 함수를 읽지만, 지정되지 않은 필드를 포함하지 않습니다.
변환 전에 입력이 실패하거나 성공한 경우 입력 항목의 수가 지정되면 리턴값은 EOF입니다.
예
이 예는 파일
myfile을 읽도록 연 다음 스트링, 긴 정수값,
문자 및 부동 소수점 값에 대해 이 파일을 스캔합니다.
#include <stdio.h>
#define MAX_LEN 80
int main(void)
{
FILE *stream;
long l;
float fp;
char s[MAX_LEN + 1];
char c;
stream = fopen("mylib/myfile", "r");
/* Put in various data. */
fscanf(stream, "%s", &s [0]);
fscanf(stream, "%ld", &l);
fscanf(stream, "%c", &c);
fscanf(stream, "%f", &fp);
printf("string = %s\n", s);
printf("long double = %ld\n", l);
printf("char = %c\n", c);
printf("float = %f\n", fp);
}
/*************** If myfile contains ************************
**************** abcdefghijklmnopqrstuvwxyz 343.2 ***********
********************** expected output is: *********************
string = abcdefghijklmnopqrstuvwxyz
long double = 343
char = .
float = 2.000000
*/