-
C/C++ scanf(3), fscanf(3), sscanf(3)C,C++ & Linux 2020. 5. 22. 14:51728x90
함수 기능
형식화된 문자열을 읽어들이는 함수입니다.
scanf() 함수는 표준 입력 파일로부터 읽어들입니다.
fscanf() 함수는 지정한 파일로부터 읽어들입니다.
sscanf() 함수는 지정한 문자열로부터 읽어들입니다.
함수 원형
#include <stdio.h> int scanf(const char *format, ...); int fscanf(FILE *fp, const char *format, ...); int sscanf(const char *buf, const char *format, ...);
매개변수
format
형식 지정자
%[*][필드 너비][길이수정자][변환형식]
변환형식
변환형식 설명 d 부호 있는 10진 정수 i 부호 있는 정수, 밑은 입력 형식에 따라 달라짐 o 부호 없는 8진수 u 부호 없는 10진 정수 x 부호 없는 16진 정수 a, A, e, E, f, F, g, G 부동 소수점 수 c 문자 s 문자열 [ ]까지 나열된 문자들 중 하나와 부합 [^ ]까지 나열된 문자열 이외의 한 문자와 부합 P void 포인터 n 부호 있는 정수를 가리키는 포인터 % %문자 자체 C 넓은 문자 S 넓은 문자열 ...
읽어들인 값을 저장할 포인터 리스트
fp
읽어들일 대상 파일의 파일 포인터
buf
읽어들일 대상 문자열의 포인터
반환값
성공 시 읽어들인 변수의 갯수 리턴
첫 번째 명세부터 EOF 발생 시 EOF 리턴
중간에 에러 발생 시 EOF 리턴하고 errno 설정
예제
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <memory.h> int main(int argc, char *argv[]) { int a; // 표준입력파일로부터 정수를 읽어들임 scanf("%d", &a); printf("%d\n", a); exit(0); }
결과
예제2
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <memory.h> int main(int argc, char *argv[]) { char *fname = "ssu_test.dat"; char name[BUFSIZ]; FILE *fp; int age; fp = fopen(fname, "r"); fscanf(fp, "%s%d", name, &age); fclose(fp); fp = fopen(fname, "w"); fprintf(fp, "%s is %d years old\n", name, age); fclose(fp); exit(0); }
결과
원래 ssu_test.dat는
Dongkyoo 24
였습니다.
리눅스시스템프로그래밍 저자 : 홍지만
https://book.naver.com/bookdb/book_detail.nhn?bid=14623672
책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)'C,C++ & Linux' 카테고리의 다른 글
C/C++ tmpnam(3), tmpfile(3) (0) 2020.05.22 C/C++ fileno(3) (0) 2020.05.22 C/C++ sprintf(3), snprintf(3) (0) 2020.05.22 C/C++ printf(3), fprintf(3) (0) 2020.05.22 C/C++ fgetpos(3), fsetpos(3) (0) 2020.05.22