Online Judge中基本的输入输出

一、利用c语言处理输入和输出

1、输入:

    在C语言中输入中stdin指针表示标准的输入,scanf默认读取的就是stdin指向的输入,在acm中我们可能需要不断的测试,最好将stdin重定向到某一个文件,这样可以方便调试,使用方法如下。

freopen("iniflename","r",stdin); 该函数依次指定了输入文件,操作方式,定向到的文件指针,这样在下面的读取中,可以按照scanf进行读取。

    scanf函数返回的是成功读取的个数,如果没有东西读取返回EOF=-1。读物字符串时可以使用char c = getchar();获取一个字符;

读取多个字符时可使用,char s[45]; gets(s);这样可以获得一行;如果按空格读取可以使用scanf进行。

2、输出:

    c使用printf函数进行输出。该函数使用stdout指针作为标准输出,重定向的方法:

freopen("outfile","w",stdout);

二、C++处理输入和输出

1、输入:

    和c语言类似,c++定义了标准对象cin读物标准输入,cin >> a >> b; >>操作符其实返回的是一个对象的引用,但是在while(cin >> n)中,会转化为void*类型,因此可以用于bool类型的判断。重定向cin的方法:

ifstream ifile("infilename");
streambuf *strmin_buf = cin.rdbuf(ifile.rdbuf());

返回的是一个streambuf 指针,指向当前读取的缓冲地址。

2、输出:

    c++使用cout输出,重定向的方法:

ofstream outfile("outfilename");
streambuf *strmout_buf = cout.rdbuf(outfile.rdbuf());

返回的是一个streambuf 指针,指向当前写入的缓冲地址。

原文地址:https://www.cnblogs.com/heweiyou/p/4732955.html