C언어에서 fputs 함수는 문자열을 파일에 쓰는 데 사용되는 함수입니다.
우리가 이전 포스팅에서 확인한 fprintf도 파일에 데이터를 쓰는 함수이지만 fputs도 동일합니다.
2023.07.20 - [C/stdio] - [C언어/C++] fprintf 함수를 활용한 파일 쓰기
함수의 맨 앞 f 알파벳이 붙는 이유는 file을 핸들링하는 함수이기 때문입니다.
자 그러면 fputs 함수원형부터 확인해 보도록 하겠습니다.
fputs 함수원형
fputs 함수의 함수 원형과 각 인자에 대한 설명은 다음과 같습니다
int fputs(const char *str, FILE *stream);
각 인자들은 아래와 같습니다.
함수인자
str: 출력할 문자열입니다.
stream: 파일 포인터로, 데이터를 쓸 파일을 가리키는 FILE 구조체에 대한 포인터입니다.
fputs 함수는 주어진 문자열 str을 stream에 씁니다. 문자열은 NULL 문자 ('\0')로 끝나야 합니다. 함수는 성공적으로 문자열을 쓴 경우 0 이외의 값을 반환하고, 실패한 경우 EOF를 반환합니다.
fputs 함수는 fprintf 함수와는 달리 형식 지정자를 사용하지 않으며, 단순히 문자열을 그대로 출력합니다. 따라서 형식 변환이나 다른 데이터 유형의 처리는 직접 수행해야 합니다.
자 그러면 몇 가지 예제를 통해 알아보도록 하겠습니다.
파일에 문자열 쓰기 예제
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file != NULL) {
const char *str = "Hello, World!";
fputs(str, file);
fclose(file);
}
return 0;
}
fprintf는 파일 핸들 인자가 제일 처음 전달되지만 fputs의 경우는 파일 핸들이 제일 뒤 인자에 전달된다는 차이점이 있습니다.
여러 줄에 걸쳐 데이터 쓰기 예제
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file != NULL) {
const char *line1 = "This is line 1.";
const char *line2 = "This is line 2.";
const char *line3 = "This is line 3.";
fputs(line1, file);
fputs("\n", file);
fputs(line2, file);
fputs("\n", file);
fputs(line3, file);
fclose(file);
}
return 0;
}
위 예제는 여러 줄의 문자열을 추가하는 예제입니다.
fprintf와 동일하게 여러 번 fputs를 호출하고 있습니다.
fprintf와 조합하여 포맷 문자열 쓰기 예제
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file != NULL) {
int number = 10;
const char *str = "The number is: ";
fputs(str, file);
fprintf(file, "%d", number);
fclose(file);
}
return 0;
}
위의 예제는 문자열을 단순 추가하는 fputs와 포맷을 이용한 fprintf를 조합하여 사용한 예제입니다.
정수 값의 문자열이 뒤에 추가되는 것을 알 수 있습니다.
위 예제들은 fputs 함수를 사용하여 파일에 데이터를 출력하는 방법을 보여줍니다. 파일을 열고 쓴 후에는 항상 파일을 닫는 것을 잊지 말아야 합니다. 또한 파일이 정상적으로 열렸는지 확인하는 것도 중요합니다.