fprintf, printf, sprintf의 차이?
누가 간단한 영어로 설명해주실 수 있나요?printf
,fprintf
,그리고.sprintf
예를 들면요?
무슨 스트림이에요?
"C에서의 파일 처리"를 읽으면서 이 세 가지를 정말 헷갈렸어요.
C에서 스트림은 추상화입니다.프로그램의 관점에서 보면 단순히 바이트의 생산자(입력 스트림) 또는 소비자(출력 스트림)입니다.디스크상의 파일, 파이프, 터미널, 또는 프린터나 tty등의 다른 디바이스에 대응합니다.그FILE
type에는 스트림에 대한 정보가 포함되어 있습니다.보통, 당신은 그 일을 망치지 않습니다.FILE
오브젝트의 콘텐츠를 직접 표시하면 다양한 I/O 루틴에 포인터를 전달하기만 하면 됩니다.
표준 스트림에는 다음 3가지가 있습니다.stdin
표준 입력 스트림에 대한 포인터입니다.stdout
는 표준 출력 스트림에 대한 포인터입니다.stderr
는 표준 오류 출력 스트림에 대한 포인터입니다.인터랙티브세션에서는 보통 3개의 콘솔이 참조되지만 다른 파일 또는 디바이스를 가리키도록 리다이렉트 할 수 있습니다.
$ myprog < inputfile.dat > output.txt 2> errors.txt
이 예에서는,stdin
이제 을 가리키다inputfile.dat
,stdout
가리키다output.txt
,그리고.stderr
가리키다errors.txt
.
fprintf
는 지정한 출력 스트림에 포맷된 텍스트를 씁니다.
printf
글쓰기와 같다fprintf(stdout, ...)
표준 출력 스트림이 현재 가리키는 모든 위치에 포맷된 텍스트를 씁니다.
sprintf
포맷된 텍스트를 다음 배열에 씁니다.char
(스트림과 반대).
printf
표준 출력 스트림에 출력합니다(stdout
)
fprintf
파일 핸들로 이동합니다(FILE*
)
sprintf
할당한 버퍼로 이동합니다.(char*
)
printf"format", args)는 표준 출력(대부분 컴퓨터 모니터)에 데이터를 인쇄하기 위해 사용됩니다.
sprintf(char *, "format", args)는 printf와 같습니다.표준 출력(모니터 등)에 포맷된 문자열을 표시하는 대신 char pointer(최초의 파라미터)가 가리키는 문자열에 포맷된 데이터를 저장합니다.printf 구문과 sprint 구문의 차이는 문자열 위치뿐입니다.
fprintf(FILE *fp, "format", args)는 다시 printf와 같습니다.여기서 포맷된 데이터는 모니터에 데이터를 표시하거나 어떤 문자열에 저장하는 대신 fprint의 첫 번째 파라미터로 사용되는 파일 포인터가 가리키는 파일에 저장된다.파일 포인터는 printf 구문에 추가된 유일한 기능입니다.
stdout 파일이 fprintf의 첫 번째 파라미터로 사용되는 경우 그 동작은 printf의 동작과 동등하다고 간주됩니다.
printf(...)
fprintf(stdout,...)
.
fprintf
는 스트림 출력에 사용됩니다.
sprintf(buffer,...)
이치노
, 「」도 있습니다.vsprintf
,vfprintf
★★★★★★★★★★★★★★★★★」vprintf
vsnprintf() 함수를 사용하여 매우 유용한 작업을 수행할 수도 있습니다.
$ cat test.cc
#include <exception>
#include <stdarg.h>
#include <stdio.h>
struct exception_fmt : std::exception
{
exception_fmt(char const* fmt, ...) __attribute__ ((format(printf,2,3)));
char const* what() const throw() { return msg_; }
char msg_[0x800];
};
exception_fmt::exception_fmt(char const* fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vsnprintf(msg_, sizeof msg_, fmt, ap);
va_end(ap);
}
int main(int ac, char** av)
{
throw exception_fmt("%s: bad number of arguments %d", *av, ac);
}
$ g++ -Wall -o test test.cc
$ ./test
terminate called after throwing an instance of 'exception_fmt'
what(): ./test: bad number of arguments 1
Aborted (core dumped)
인쇄물
- printf는 화면에서 출력을 수행하는 데 사용됩니다.
- = "구문" =
printf("control string ", argument );
- 파일 입력/출력과는 관련이 없습니다.
인쇄
- FILE 핸들이 가리키는 파일에서 쓰기 작업을 수행하기 위해 사용되는 fprint.
- 은 '하다' 입니다.
fprintf (filename, "control string ", argument );
- 파일 입출력 관련
sprintf:포맷된 데이터를 stdout 대신 메모리의 문자열에 씁니다.
sprintf 구문은 다음과 같습니다.
#include <stdio.h>
int sprintf (char *string, const char *format
[,item [,item]…]);
여기서,
문자열은 데이터가 기록되는 메모리 내의 버퍼에 대한 포인터입니다.
포맷은 포맷을 정의하는 문자열에 대한 포인터입니다.
각 항목은 쓸 데이터를 지정하는 변수 또는 식입니다.
sprintf에 의해 반환되는 값은 조작이 성공했을 경우, 또는 기입된 문자수보다 크거나 같거나, 즉 종단 늘 문자를 카운트하지 않고 반환되며, 에러가 발생했을 경우 0 미만의 값을 반환합니다.
printf: stdout에 인쇄
printf 구문은 다음과 같습니다.
printf format [argument]…
sprintf()와 printf()의 유일한 차이점은 sprintf()는 문자 배열에 데이터를 쓰는 반면 printf()는 표준 출력 장치인 stdout에 데이터를 쓰는 것입니다.
fprintf
은 것것 where where where where where where where where where where where로 되어 있는 되어 있습니다.printf
와 유사한 스테이트먼트입니다.fprintf
즉 과 관련이 없습니다.fprintf
file related ( 관련)
언급URL : https://stackoverflow.com/questions/4627330/difference-between-fprintf-printf-and-sprintf
'sourcecode' 카테고리의 다른 글
Python SQL 다른 테이블에서 일치하지 않는 항목을 찾는 방법 (0) | 2022.09.18 |
---|---|
Node.js 응용 프로그램을 디버깅하려면 어떻게 해야 하나요? (0) | 2022.09.18 |
PHP에서 유용한 오류 메시지를 얻으려면 어떻게 해야 합니까? (0) | 2022.09.18 |
데이터 프레임을 피벗하려면 어떻게 해야 합니까? (0) | 2022.09.18 |
화살표 함수(공용 클래스 필드)를 클래스 메서드로 사용하는 방법 (0) | 2022.09.18 |