1.逐行读出 datafile2.txt 文件中的字符并显示出来。
#include <stdio.h>
void main()
{ FILE *fp2;
char buffer[64];
if ((fp2=fopen (″datafile2.txt″,″r″))== NULL) /*以只读方式打开文件,且测试*/
{
printf (″can′t open file \ n″);
exit (1); /* 打开不成功退出 */
}
while (!feof (fp2)) /* 测试文件是否结束 */
{
if (fgets (buffer,64,fp2)!= NULL) /*读一行字符并测试是否为空*/
printf (″%s″,buffer); /* 显示该行字符 */
}
fclose (fp2); /* 关闭文件 */
}
2.从键盘输入若干行字符,把它们添加到磁盘文件 datafile3.txt 中。
#include <stdio.h>
void main()
{ FILE * fp3;
char buffer[64];
if ((fp3 = fopen (″ datafile3.txt ″,″ a ″))== NULL) /* 打开文件 */
{
printf (″ can ′t open file \ n ″);exit (1);
}
while (strlen (fgets ( buffer,64,stdin))> 0)
/* 从键盘读一行字符,并测试读入的字符串长度是否为0 */
{
fputs (buffer,fp3); /* 写入磁盘文件 */
fputs (″\ n″,fp3); /* 添加分隔标志 */
}
fclose(fp3); /* 关闭文件 */
}
3.编写一个通用的显示磁盘文件内容的程序。
#include <stdio.h>
void main (int argc,char *argv[] )
{
FILE * fp4;
char buffer [128];
if ((fp4 = fopen (argv [1],″ r ″))== NULL) /*从命令行取文件名,打开文件 */
{
printf (″ file cannot be opened \ n ″); exit (1);
}
while (fgets (buffer,128,fp4)!= NULL ) /* 读一行字符 */
printf (″ %s ″,buffer); /* 显示字符串 */
fclose (fp4); /* 关闭文件 */
}
6.编程完成读出文件 sfile.txt 中的内容,反序写入另一个文件 dfile.txt 中去。
#include <stdio.h>
#define BUFFSIZE 5000
void main ()
{
FILE *sfp,*dfp;
int i;
char buf [ BUFFSIZE ];
if ((sfp = fopen (″sfile.txt″,″ r″))== NULL) /* 以只读方式打开源文件 */
{
printf (″Source file cannot be opened \ n″);
exit (1);
}
if (!(dfp = fopen (″dfile.txt″,″w″))) /* 以只写方式打开目的文件 */
{
printf (″Destination file cannot be opened \ n″);
exit (1);
}
i = 0;
while (!feof (sfp)) /* 判断是否是文件尾,不是则循环 */
{
buf [ i++ ] = fgetc (sfp); /* 读出数据送缓冲区 */
if ( i > = 5000 ) /* 若 i 超出 5000,程序设置的缓冲区不足 */
{
printf (″buffer not enough !″);
exit (1); /* 退出 */
}
}
while ( -- i > = 0) /* 控制反序操作 */
fputc (buf [ i ],dfp); /* 写入目的文件中 */
fclose (sfp); /* 关闭原文件 */
fclose (dfp); /* 关闭目的文件 */
}