1. 程式人生 > >C++快速入門---檔案IO(3)

C++快速入門---檔案IO(3)

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; 
	
}