比赛调试利器-freopen

功能: 替换一个流,或者说重新分配文件指针,实现重定向。

如果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

 

在比赛中,输入这样的数据是很浪费时间的,而且调试多次,每次都输入简直有点不可能,所以,改变输入流用文件输入是非常值得考虑的。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值