多语言展示
当前在线:1425今日阅读:26今日分享:39

【C语言-16】将内容输出在文件中

当我们用printf函数输出时,输出内容是现实在控制台中的,那么,可不可以让内容直接输出在文件中呢?这是可以的。
工具/原料

C-Free

例:
1

打开C-Free,新建文件。

2

输入以下内容:#includemain(){ int i,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所指向的文件。

附:

在最后,附上一个输出百年历到txt文本的程序:#includeint year=2000;int xc=5;FILE *fp;int mon(int m){ int i=1,ml,xcl; if(m==1|m==3|m==5|m==7|m==8|m==10|m==12)ml=31; else if(m==4|m==6|m==9|m==11)ml=30; else if(m==2&((year%4==0&year%100!=0)|year%400==0))ml=29; else ml=28; if(i==1&(xc==-1|xc==6)){ fprintf(fp,'\n%d年 %d月\n 日 一 二 三 四 五 六\n 0%d',year,m,i); i++; goto L1; } 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); else if(i==1&(xc==-1|xc==6)); else if((i+xc)%7!=0&i>=10)fprintf(fp,' %d',i);  else if((i+xc)%7==0&i<10)fprintf(fp,'\n 0%d',i); else fprintf(fp,'\n %d',i); } fprintf(fp,'\n');} int monp(int m){ if(m==1|m==3|m==5|m==7|m==8|m==10|m==12)xc=xc-4; else if(m==4|m==6|m==9|m==11)xc=xc-5; else if(m==2&((year%4==0&year%100!=0)|year%400==0))xc=xc+1; if(xc<-1)xc=xc+7;}main(){ int i; fp=fopen('百年历.txt','w');  for(;year<=2100;year++) for(i=1;i<=12;i++){ mon(i); monp(i); } fclose(fp);}

推荐信息