[]単純なファイルの読み取りと書き込みC / C ++コードのサンプルドキュメントリーダー - FILEポインタとストリームは、fstreamのファイルを

#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>

using namespace std;

int main(){
    // C++
    cout << "C++ IO:" << endl;
    fstream fin, fout;
    fin.open("FileIO.txt", ios::in);
    fout.open("FileIOcpp.txt", ios::out);
    string s;
    cout << "逐str读取:\n";
    while(!fin.eof()){
        fin >> s; // 逐个 s 的取,根据 s 类型而定
        cout << s << endl;
        fout << s << endl;
    }
    fin.close();
    fout.close();
    fin.open("FileIO.txt", ios::in);
    cout << "按行读取:\n";
    while(getline(fin, s)){ // 逐行读取
        cout << s << endl;
    }
    fin.close();

    // C
    printf("\nC IO:\n");
    FILE *fpIn = fopen("FileIO.txt", "r");
    FILE *fpOut = fopen("FileIOc.txt", "w");
    
    // 直接以字符串读取所有
    fseek(fpIn, 0, SEEK_END); // 跳到文件尾
    long lsize = ftell(fpIn); // 获取文件内容长度
    fseek(fpIn, 0, SEEK_SET); // 回到文件首
    char *str = (char*)malloc((lsize+1)*sizeof(char)); // 申请空间
    fread(str, sizeof(char), lsize, fpIn);    // 读取数据,长度为lsize
    printf("一次读取:\n%s\n", str);
    fseek(fpIn, 0, SEEK_SET); // 重回文件首
    // 按字符串读取所有
    printf("逐str读取:\n");
    while(!feof(fpIn)){
        fscanf(fpIn, "%s", str);
        printf("%s\n", str);
        fprintf(fpOut, "%s\n", str);
    }

    fseek(fpIn, 0, SEEK_SET); // 重回文件首
    // 按行读取所有
    printf("逐行读取:\n");
    while(!feof(fpIn)){
        fgets(str, lsize+1, fpIn); // 参数分别为: 接收buf, 最大长度,文件指针
        printf("%s\n", str); //注意 fgets 会将换行符也接受
    }
    free(str);
    fclose(fpIn);
    fclose(fpOut);
    return 0;
}

 

公開された62元の記事 ウォンの賞賛9 ビュー7775

おすすめ

転載: blog.csdn.net/qq_40491305/article/details/104491847
おすすめ