C++快速入門---檔案IO(3)
阿新 • • 發佈:2018-10-31
C++快速入門---檔案IO(3)
argc與argv[]
在程式中,main函式有兩個引數,整形變數argc和字元指標陣列argv[]
argc:程式的引數數量,包括本身
argv[]的每個指標指向命令列的一個字串,所以argv[0]指向字串"copyFile.exe"。argv[1]指向字串sourceFile,agrv[2]指向字串destFile。
getc()函式一次從輸入流(stdin)讀取一個字元。
putc()函式把這個字元寫入到輸出流(stdout)。
複製檔案的內容到另一個檔案
C語言程式碼如下:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *in, *out; int ch; if (argc != 3) { fprintf(stderr, "輸入形式:copyFile 原始檔名 目標檔名 \n"); exit(EXIT_FAILURE); } if ((in = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "打不開檔案:%s\n", argv[1]); exit(EXIT_FAILURE); } if((out = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "打不開檔案:%s\n", argv[2]); fclose(in); exit(EXIT_FAILURE); } while ((ch = getc(in)) != EOF) { if(putc(ch, out) == EOF) { break; } } if (ferror(in)) { printf("讀取檔案 %s 失敗! \n", argv[1]); } if (ferror(out)) { printf("讀取檔案 %s 失敗! \n", argv[2]); } printf("成功複製1個檔案!\n"); fclose(in); fclose(out); return 0; }
把檔案的內容列印在螢幕上:
C++程式碼如下:(ifstream)
#include <fstream> #include <iostream> using namespace std; int main() { ifstream in; in.open("test.txt"); if(!in) { cerr << "開啟檔案失敗" << endl; return 0; } char x; while (in >> x)//檔案流到x裡面去 { cout << x;//再從x流到cout } cout << endl; in.close(); return 0; }
ofstream:
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ofstream out;
out.open("test.txt");
if (!out)
{
cerr << "開啟檔案失敗!" << endl;
return 0;
}
for (int i = 0; i < 10; i++)
{
out << i;
}
return 0;
}
ifstream in(char *filename, int open_mode)
open_mode表示開啟模式,其值用來定義以怎樣的方式開啟檔案
常見的開啟模式 ios::app:寫入的所有資料將被追加到檔案的末尾
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ofstream out("test.txt", ios::app);
if(!out)
{
cerr << "檔案開啟失敗!" << endl;
return 0;
}
for(int i = 10; i > 0; i--)
{
out << i;
}
out << endl;
out.close();
return 0;
}
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
fstream fp("test.txt", ios::in | ios::out);//可讀可寫
if(!fp)
{
cerr << "開啟檔案失敗!" << endl;
return 0;
}
fp << "hello world";
static char str[100];
fp.seekg(ios::beg); //使得檔案指標指向檔案頭 ios::end則是檔案尾
fp >> str;
cout << str <<endl;
fp.close();
return 0;
}