文件读入读出方式

ACM题目中有时测试样例的输入比较麻烦,一次次手动输入肯定很费时间。所以用freopen函数,是一种比较快捷的办法。具体代码是

	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);

事先应该在所在工程的源文件处(右击工程可以打开所在文件夹),在这个文件夹里面新建一个名为 in  的文本文档,这个就作为输入数据文件,将要输入的数据预先存入其中。

再在这个文件夹里面新建一个名为 out 的文本文档,这样执行上面两行代码之后,输出结果就会自动存入out.txt中。


进一步,在源代码的开头可以添加这样一行代码:

#define FILE

其中 FILE 可以是其他的名称,然后在读入读出语句的开头和结尾添加两行代码,如下:

#ifdef FILE
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
#endif
这样就是告诉编译器,如果我们事先定义了“FILE”,就执行freopen两句,这个称为“活动预处理模块”。

以一个很简单的问题为例:输入16进制数,将其改写为10进制

用文件读入读出的代码如下:

#include<iostream>
#include<cstring>
#define FILE
using namespace std;
int main()
{
#ifdef FILE
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
#endif
        char data16[400];
        int data10=0,d;
        int i;
        /**********Program**********/
        int j=0;
		while(cin>>data16)
		{
		int num16[100];
        d=strlen(data16);
        int power[100];
        for(i=0;i<d;i++)
        {
        	switch(data16[i])
        	{
        		case 'A':num16[i]=10; break;
        		case 'B':num16[i]=11; break;
        		case 'C':num16[i]=12; break;
        		case 'D':num16[i]=13; break;
				case 'E':num16[i]=14; break;
				case 'F':num16[i]=15; break;
				default:num16[i]=data16[i]-'0';
        	}
        //	cout<<data16[i]<<endl;
        }
        for(i=0;i<d;i++)
        {
        	power[i]=1;
        	while(j<d-1-i) 
			{
				power[i]*=16;
				j++;
			}
			j=0;
        }
        for(i=0;i<d;i++)
        {
    //    cout<<data16[i]<<" "<<i<<endl;
    //    cout<<power[i]<<" "<<i<<endl;;
          data10+=num16[i]*power[i];
		}
  
        /**********  End  **********/
        cout<<data10<<endl;
		}
	//	system("pause");
        return 0;
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值