用二进制方法打开,(即fopen第二个参数里有"b"), 用fread,fwrite, 读写,用 fseek 找位置,非常快。
1、整形快读快写 1. char buf[100000], * p1 = buf, * p2 = buf;2.3. inline char nc() {4. if(p1 == p2) p2 = (p1 = buf) + fread(buf, 1, 1, stdin);5. return *p1++;6. }7.8. inline int read3(int* a, int i) {9. int x = 0, f = 1;10. char ch = nc();11...
returnp1 == p2 && (p2 = (p1 = buf) +fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1++; } template<typenameT> inlineT read() { charch = nc(); T sum = 0; while(!(ch >='0'&&ch <='9')) { ch = nc(); ...
三、基于fread的读入优化 考虑到getchar的速度还是不够快,我们可以使用fread(头文件)来优化getchar,代码如下: #definegetchar()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<> charbuf[121],*p1=buf,*p2=buf; 然后可以直接使用前文所述的读优。 打成三目运算符可能不太好理解哈。 关于逗号“,”,不理解的...
快读板子 struct IO { inline char read(){ static const int IN_LEN=1<<18|1; static char buf[IN_LEN],*s,*t; return (s==t)&&(t=(s=buf)+fread(buf,1,IN_LEN,stdin)),s==t?-1:*s++; } inline IO & operator >> (char &c){ for(c=read();c=='\n'||c=='\r'||c==...
去掉fread快读其实很短 #include<cstdio>#include<algorithm>usingnamespacestd;namespacefast_IO{constintIN_LEN =10000000, OUT_LEN =10000000;charibuf[IN_LEN], obuf[OUT_LEN], *ih = ibuf + IN_LEN, *oh = obuf, *lastin = ibuf + IN_LEN, *lastout = obuf + OUT_LEN -1;inlinechargetchar...
磁盘文件: 文本文件:ASCII 二进制文件:0101二进制编码 文件操作的一般步骤: 1.打开文件 fopen 2.对文件进行读写操作 fputc、fgetc、fputs、fgets、fread、fwrite 3.关闭文件 fclose 还有众多文件打开和关闭的函数,需要一一对应,不能乱匹配 fopen--》fclose open--》close popen--》pclose 打开关闭文件函数: FILE ...
fread(LL3_0,80*80*sizeof(double),1,f); fclose(f); if((f=fopen("Uw.dat", "rb"))==NULL) //读取水印左奇异向量,待提取水印时使用 errorNexit("打开文件失败:","Uw.dat"); fread(Uw,64*64*sizeof(double),1,f); fclose(f); if((f=fopen("Vw.dat", "rb"))==NULL) //读取水印...
这也导致sprintf 比printf 有用得多。 sprintf 是个变参函数,定义如下: int sprintf( char *buffer...
考虑到getchar的速度还是不够快,我们可以使用fread(头文件)来优化getchar,代码如下: #definegetchar()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<> charbuf[121],*p1=buf,*p2=buf; 然后可以直接使用前文所述的读优。 打成三目运算符可能不太好理解哈。