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

猜你喜欢

转载自blog.csdn.net/xiaodingqq/article/details/83505465