功能: 替换一个流,或者说重新分配文件指针,实现重定向。
如果stream流已经打开,则先关闭该流。如果该流已经定向,则freopen将会清除该定向。
此函数一般用于将一个指定的文件打开一个预定义的流:标准输入、标准输出或者标准出错。
用 法: FILE *freopen(const char *filename,const char *type, FILE *stream);
头文件:stdio.h
参数说明:
path: 文件名,用于存储输入输出的自定义文件名。
mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。
stream: 一个文件,通常使用标准流文件。
返回值:如果成功则返回该指向该stream的指针,否则为NULL。
举例说明
//SDUT 1568
#include <stdio.h>
#include <string.h>
int main()
{
int a[100][100];
int i = 0,c = 0;
int *p;
int h = 0,l = 0;
int ih = 0,il = 0;
//freopen ("1.txt","r",stdin);
scanf ("%d %d",&h,&l);
for (ih = 0;ih < h;ih++)
for (il = 0;il < l;il++)
scanf ("%1d",&a[ih][il]);
for (ih = 0;ih < h;ih++)
{
i = 0;
p = a[ih];
while (*p != 0 && i < l)
{
p++;
i++;
}
if (i >= l)
{
c++;
}
}
while (c--)
{
for (il = 0;il < l;il++)
printf ("0");
printf ("\n");
}
for (ih = 0;ih < h;ih++)
{
i = 0;
p = a[ih];
while (*p != 0 && i < l)
{
p++;
i++;
}
if (i < l)
{
for (il = 0;il < l;il++)
printf ("%d",a[ih][il]);
printf ("\n");
}
}
return 0;
}
在这题目中,测试数据居然是:
6 6 000000 001100 111111 101010 111111 101011
在比赛中,输入这样的数据是很浪费时间的,而且调试多次,每次都输入简直有点不可能,所以,改变输入流用文件输入是非常值得考虑的。