C

sprintf 함수와 fprintf 함수

스누징어 2020. 11. 20. 22:47

int sprintf(char* str, const char* format, ···)

 

매개변수(인자)

char* str = format을 복사해서 집어넣을 곳

const char* format = 서식지정자가 포함된 문자열

 

 

반환값(리턴값)

int  = 성공한 문자의 개수

(실패 시 -1을 반환)  

 

 

설명

* printf() 함수가 화면에 출력한다면 sprintf()는 char* str에 복사 대입한다.

* 배열의 크기를 넘어서면 buffer overflow가 발생할 수 있다.

 

 

예제

int main()
{
	int age = 20;
	char name[] = "전준영";

	char str[40] = "";

	sprintf(str, "%s의 나이는 %d이다.", name, age);
	printf("%s", str);

	return 0;
}

 

 

 

 

 

 

 

 

 

int fprintf(FILE* stream, const char* format, ···)

 

매개변수(인자)

FILE* stream = format을 복사해서 집어넣을 곳 (파일 포인터)

const char* format = 서식지정자가 포함된 문자열

 

 

반환값(리턴값)

int  = 성공한 문자의 개수

(실패 시 -1을 반환)  

 

 

설명

* printf() 함수가 화면에 출력한다면 fprintf()는 파일에 복사 대입한다.

주의!

파일에 바로 쓰인다기보단 buffer에 들어간다고 생각해야 옳다.

fprintf 함수를 사용하고 바로 파일을 사용한다고 해도 복사가 안되있을 수 있다.

fflush 함수를 사용하여 버퍼를 비우고 사용하는 것이 확실하다.

 

 

예제

int main()
{
	int age = 20;
	char name[] = "전준영";

	FILE* stream = fopen("introduce.txt", "w");

	fprintf(stream, "%s의 나이는 %d이다.", name, age);
	fflush(stream);

	return 0;
}

 

 

 

 

 

 

 

 

 

 

귀여운 그림은 쭐어님이 그리셨습니다.

반응형