【 文件讀寫 】簡單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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章