[C++]竞赛模板·数据统计与IO(重定向版与非重定向版)

 
/*
    数据统计与IO 重定向版模板

    描述:本机测试用文件数据流重定向,一旦提交到比赛就自动“删除”重定向语句
*/
# define LOCAL
#include<stdio.h>
#include<time.h>

int main(){
#ifdef LOCAL
    freopen("data.in","r", stdin);
    freopen("data.out","w", stdout);

    clock_t  start_t,stop_t;//计时的时钟变量
    double dur_t;//中间计时

    start_t = clock();
    /*
    time():
        @function:获取当前的系统时间
        @return:time_t(本质:大整数)
        @significance:其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数.
    */
    printf("[LOCAL] Test LOCAL Define.\n");
#endif // LOCAL

    int x;
    while(scanf("%d", &x) == 1){//从文件内读取成功一个变量值
        printf("%d\n", x);//写入数据
    }
    printf("Hello world!");

#ifdef LOCAL
    stop_t = clock();
    dur_t = (double)(stop_t - start_t);

    printf("\n[TIME] start_t:%f", start_t);
    printf("\n[TIME] stop_t:%f", stop_t);
    printf("\n[TIME] during time:%f", dur_t);

    printf("\n[TIME] USE TIME:%ds", dur_t / CLOCKS_PER_SEC);
    /*
        常量CLOCKS_PER_SEC:表示一秒钟会有多少个时钟计时单元
    */
#endif // LOCAL
    return 0;
}
 

 

/*
    数据统计与IO 非重定向版模板

    描述:若竞赛方要求使用文件输入输出,但禁止使用重定向方式时,可以采用此法。

    使用的函数与数据结构类型:
        FILE;
        fopen;
        fscanf;
        fprintf;
        fclose
    补充:
        若想把fopen版本的程序改成读写标准输入输出,只需要赋值:fin = stdin;fout = stdout即可

*/
#include<stdio.h>
#include<iostream>

int main(){
    FILE *fin, *fout;
    fin = fopen("data.in", "rb");
    fout = fopen("data.out", "wb");

    int x;
    while(fscanf(fin, "%d", &x) == 1){//从文件内读取成功一个变量值
        fprintf(fout, "%d\n", x);//写入数据
    }

    fprintf(fout, "%s", "[Test] Hello world!");
    fclose(fin);
    fclose(fout);

    return 0;
}
/*
FILE * fopen(const char * path, const char * mode);
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回 NULL,并把错误代码存在 error 中。

mode:
r	以只读方式打开文件,该文件必须存在。
r+	以读/写方式打开文件,该文件必须存在。
rb+	以读/写方式打开一个二进制文件,只允许读/写数据。
rt+	以读/写方式打开一个文本文件,允许读和写。
w	打开只写文件,若文件存在则长度清为 0,即该文件内容消失,若不存在则创建该文件。
w+	打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a	以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留(EOF 符保留)。
a+	以附加方式打开可读/写的文件。若文件不存在,则会建立该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(原来的 EOF 符不保留)。
wb	以只写方式打开或新建一个二进制文件,只允许写数据。
wb+	以读/写方式打开或建立一个二进制文件,允许读和写。
wt+	以读/写方式打开或建立一个文本文件,允许读写。
at+	以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+	以读/写方式打开一个二进制文件,允许读或在文件末追加数据。

*/

  

 

【参考文献】

  刘汝佳.算法竞赛入门经典 

posted @ 2018-05-21 11:00  千千寰宇  阅读(454)  评论(0编辑  收藏  举报