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. ファイルを開いて閉じる:

実例

#include <cstdio>

int main() {
    FILE *file = fopen("example.txt", "w"); // 打开文件用于写入
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }
    fclose(file); // 关闭文件
    return 0;
}

2. ファイルにデータを書き込む:

実例

#include <cstdio>

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 <cstdio>
#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 を使用したフォーマット済み入出力:

実例

#include <cstdio>

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

ファイルを開いたり閉じたりするために使用されます。

実例

#include <cstdio>

int main() {
    FILE* file = fopen("example.txt", "r");
    if (file) {
        // 文件操作
        fclose(file);
    } else {
        // 处理错误
    }
    return 0;
}

fread と fwrite

ファイルからデータを読み書きするために使用されます。

実例

#include <cstdio>

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

ファイル内でファイルポインタを移動し、ファイルポインタの位置を取得するために使用されます。

実例

#include <cstdio>

int main() {
    FILE* file = fopen("example.txt", "r");
    if (file) {
        fseek(file, 0, SEEK_END); // 移动到文件末尾
        long size = ftell(file);  // 获取文件大小
        fclose(file);
    }
    return 0;
}

fflush

ファイルストリームをフラッシュし、バッファ内のデータをファイルに書き込みます。

実例

#include <cstdio>

int main() {
    FILE* file = fopen("example.txt", "w");
    if (file) {
        fputs("Hello, World!", file);
        fflush(file); // 确保数据立即写入文件
        fclose(file);
    }
    return 0;
}

printf と fprintf

標準出力またはファイルへのフォーマット済み出力に使用されます。

実例

#include <cstdio>

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

標準入力またはファイルからのフォーマット済み入力に使用されます。

実例

#include <cstdio>

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

文字列へのフォーマット済み出力と、文字列からの読み取りに使用されます。

実例

#include <cstdio>

int main() {
    char buffer[50];
    int value = 42;
    sprintf(buffer, "Value: %d", value); // 输出到字符串

    int readValue;
    sscanf(buffer, "Value: %d", &readValue); // 文字列から読み込む

    return 0;
}

fgets と fputs

ファイルから文字列を読み取り、ファイルに文字列を書き込むために使用されます。

実例

#include <cstdio>

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

ファイルから文字を読み取り、ファイルに文字を書き込むために使用されます。

実例

#include <cstdio>

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

ファイル終端フラグを表します。

実例

#include <cstdio>

int main() {
    FILE* file = fopen("example.txt", "r");
    if (file) {
        int c;
        while ((c = getc(file)) != EOF) {
            // 处理字符
        }
        fclose(file);
    }
    return 0;
}

NULL

ヌルポインタを表します。

実例

#include <cstdio>

int main() {
    FILE* file = fopen("example.txt", "r");
    if (file == NULL) {
        // 处理文件打开错误
    } else {
        fclose(file);
    }
    return 0;
}

注意事項

  • 使用<cstdio>ライブラリの使用時は、ファイルのオープンとクローズを正しく処理し、リソースリークを避けることを確認する必要があります。
  • を使用するfopen場合、正しいファイルパスとモードを提供する必要があります。
  • 使用fprintfとfscanf時は、フォーマット文字列が変数型と一致する必要があります。
その他の拡張