当我们用printf函数输出时,输出内容是现实在控制台中的,那么,可不可以让内容直接输出在文件中呢?这是可以的。
工具/原料
C-Free
例:
1、打开C-Free,新建文件。
2、输入以下内容:#include<stdio.h>main()辘腋粪梯{ inti,j; FILE*p; p=fopen("九九乘法表.墉掠载牿txt","w"); for(i=1;i<=9;i++){ fprintf(p,"\n"); for(j=1;j<=9;j++) fprintf(p,"\t%dX%d=%d",j,i,i*j); }}
3、点击保存cpp文件(注意:要记住保存的位置!)
4、点击运行,会发现没有任何结果。
5、这是因为程序中只在txt文件里写入数据,因此,打开刚刚保存cpp文件的文件夹,会发现里面多出一个九九乘法表.txt文件,这便是刚才程序写入数据的文件。
说明:
1、在进行文件有关操作时要定义一个文件指针,如:FILE*p;便定义了一个名为p的文件指针变量。
2、接下来是打开文件:p=fopen("挢旗扦渌;九九乘法表.txt","w");便指以只写方坜燔潮蟾式打开九九乘法表.txt文件。其中,"W"是只写的意思,另外还有其他的,如:r只读a在后文追加rb二进制文件,只读wb二进制文件,只写ab二进制文件,追加。另外,写入文件的文件类型不一定非要是txt文件,还可以是dat等其他文件。
3、接着是fprintf函数,与printf函数用法差不多唯一的区别是fprintf前必须加上指针变量,即:fprintf(指针变量,”内容“,参数);通俗地说,fprintf便是在文件中打印字符。
4、另外:相对fopen函数,还有fclose函数,作用是关闭文件,如:pclose(p);便是关闭指针p所指向的文件。
附:
1、在最后,附上一个输出百年历到txt文本的程序:#include<stdio.丝群闻栝h>intyear=20扉钛笆哇00;intxc=5;FILE*fp;intmon(intm){ inti=1,ml,xcl; if(m==1|m==3|m==5|m==7|m==8|m==10|m==12)ml=31; elseif(m==4|m==6|m==9|m==11)ml=30; elseif(m==2&((year%4==0&year%100!=0)|year%400==0))ml=29; elseml=28; if(i==1&(xc==-1|xc==6)){ fprintf(fp,"\n%d年%d月\n日一二三四五六\n0%d",year,m,i); i++; gotoL1; } fprintf(fp,"\n%d年%d月\n日一二三四五六\n",year,m); for(xcl=xc+1;xcl>0;xcl--)fprintf(fp,""); i=1;L1: for(;i<=ml;i++){ if((xc+i)%7!=0&i<10)fprintf(fp,"0%d",i); elseif(i==1&(xc==-1|xc==6)); elseif((i+xc)%7!=0&i>=10)fprintf(fp,"%d",i); elseif((i+xc)%7==0&i<10)fprintf(fp,"\n0%d",i); elsefprintf(fp,"\n%d",i); } fprintf(fp,"\n");}intmonp(intm){ if(m==1|m==3|m==5|m==7|m==8|m==10|m==12)xc=xc-4; elseif(m==4|m==6|m==9|m==11)xc=xc-5; elseif(m==2&((year%4==0&year%100!=0)|year%400==0))xc=xc+1; if(xc<-1)xc=xc+7;}main(){ inti; fp=fopen("百年历.txt","w"); for(;year<=2100;year++) for(i=1;i<=12;i++){ mon(i); monp(i); } fclose(fp);}