C++ 標準ライブラリ <cstdio>
<cstdio>C++ 標準ライブラリのヘッダファイルで、C 言語の標準 I/O ライブラリの C++ ラッパーを含み、主にファイルの入出力操作に使用されます。
<cstdio>このライブラリは、入出力操作を実行するための関数群を定義しています。これらの関数は、ファイルやコンソールの読み書きに使用できます。
構文
使用する<cstdio>ライブラリ内の関数の前に、C++ プログラムの先頭にこのヘッダファイルを含める必要があります:
#include <cstdio>
よく使う関数
<cstdio>ライブラリには、ファイル I/O に使用する多くの関数が含まれています。以下はよく使う関数です:
fopen:ファイルを開く。fclose:ファイルを閉じる。fread:ファイルからデータを読み取る。fwrite:ファイルにデータを書き込む。fprintf:ファイルにフォーマット済み出力を書き込む。fscanf:ファイルからフォーマット済み入力を読み取る。fgetc:ファイルから1文字読み取る。fputc:ファイルに1文字書き込む。fgets:ファイルから1行読み取る。fputs:ファイルに1行書き込む。
実例
1. ファイルを開いて閉じる:
実例
int main() {
FILE *file = fopen("example.txt", "w"); // 打开文件用于写入
if (file == NULL) {
perror("Error opening file");
return 1;
}
fclose(file); // 关闭文件
return 0;
}
2. ファイルにデータを書き込む:
実例
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
fprintf(file, "Hello, World!n");
fclose(file);
return 0;
}
"example.txt" ファイルに "Hello, World!" を書き込みました。
3. ファイルからデータを読み取る:
実例
#include <iostream>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
char buffer[100];
while (fgets(buffer, 100, file) != NULL) {
std::cout << buffer;
}
fclose(file);
return 0;
}
"example.txt" ファイルから "Hello, World!" を読み取って出力します。
4. fscanf と fprintf を使用したフォーマット済み入出力:
実例
int main() {
FILE *file = fopen("data.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
fprintf(file, "%d %fn", 42, 3.14159);
fclose(file);
file = fopen("data.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
int number;
float pi;
fscanf(file, "%d %f", &number, &pi);
fclose(file);
std::printf("Number: %d, Pi: %fn", number, pi);
return 0;
}
出力結果:Number: 42, Pi: 3.141590
fopen と fclose
ファイルを開いたり閉じたりするために使用されます。
実例
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
// 文件操作
fclose(file);
} else {
// 处理错误
}
return 0;
}
fread と fwrite
ファイルからデータを読み書きするために使用されます。
実例
int main() {
FILE* file = fopen("example.bin", "wb");
if (file) {
int data = 12345;
fwrite(&data, sizeof(data), 1, file);
fclose(file);
}
return 0;
}
fseek と ftell
ファイル内でファイルポインタを移動し、ファイルポインタの位置を取得するために使用されます。
実例
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
fseek(file, 0, SEEK_END); // 移动到文件末尾
long size = ftell(file); // 获取文件大小
fclose(file);
}
return 0;
}
fflush
ファイルストリームをフラッシュし、バッファ内のデータをファイルに書き込みます。
実例
int main() {
FILE* file = fopen("example.txt", "w");
if (file) {
fputs("Hello, World!", file);
fflush(file); // 确保数据立即写入文件
fclose(file);
}
return 0;
}
printf と fprintf
標準出力またはファイルへのフォーマット済み出力に使用されます。
実例
int main() {
int value = 42;
printf("Value: %d\n", value); // 输出到标准输出
FILE* file = fopen("output.txt", "w");
if (file) {
fprintf(file, "Value: %d\n", value); // 输出到文件
fclose(file);
}
return 0;
}
scanf と fscanf
標準入力またはファイルからのフォーマット済み入力に使用されます。
実例
int main() {
int value;
scanf("%d", &value); // 標準入力から読み取る
FILE* file = fopen("input.txt", "r");
if (file) {
fscanf(file, "%d", &value); // ファイルから読み取る
fclose(file);
}
return 0;
}
sprintf と sscanf
文字列へのフォーマット済み出力と、文字列からの読み取りに使用されます。
実例
int main() {
char buffer[50];
int value = 42;
sprintf(buffer, "Value: %d", value); // 输出到字符串
int readValue;
sscanf(buffer, "Value: %d", &readValue); // 文字列から読み込む
return 0;
}
fgets と fputs
ファイルから文字列を読み取り、ファイルに文字列を書き込むために使用されます。
実例
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
char buffer[100];
if (fgets(buffer, sizeof(buffer), file)) {
// 读取成功
}
fclose(file);
}
file = fopen("example.txt", "w");
if (file) {
fputs("Hello, World!\n", file); // 写入字符串到文件
fclose(file);
}
return 0;
}
getc と putc
ファイルから文字を読み取り、ファイルに文字を書き込むために使用されます。
実例
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
int c = getc(file); // 读取一个字符
fclose(file);
}
file = fopen("example.txt", "w");
if (file) {
putc('A', file); // 写入一个字符
fclose(file);
}
return 0;
}
feof と ferror
ファイルの終端とファイルエラーを検出するために使用されます。
実例
#include <cstdio>
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
while (!feof(file)) {
int c = getc(file);
if (ferror(file)) {
// 处理错误
break;
}
// 处理字符
}
fclose(file);
}
return 0;
}
EOF
ファイル終端フラグを表します。
実例
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
int c;
while ((c = getc(file)) != EOF) {
// 处理字符
}
fclose(file);
}
return 0;
}
NULL
ヌルポインタを表します。
実例
int main() {
FILE* file = fopen("example.txt", "r");
if (file == NULL) {
// 处理文件打开错误
} else {
fclose(file);
}
return 0;
}
注意事項
- 使用
<cstdio>ライブラリの使用時は、ファイルのオープンとクローズを正しく処理し、リソースリークを避けることを確認する必要があります。 - を使用する
fopen場合、正しいファイルパスとモードを提供する必要があります。 - 使用
fprintfとfscanf時は、フォーマット文字列が変数型と一致する必要があります。