16
// p1-851.cpp 为main()函数文件 #include main() {
int i,s=0;
extern int fact(int x); for (i=2;i<=6;i=i+2) s+=fact(i);
cout<<\}
// p1-852.cpp为计算阶乘函数文件 //定义fact()函数为外部(extern)函数 extern int fact(int x) {
int i,t=1;
if(x==0) return(1); for(i=1;i<=x;i++) t*=i; return(t); }
#include #include #include #include main() {
//声明变量 FILE *fp1; char str[80];
//从键盘上任意输入一个字符串 cout<<\ cin.getline(str,80);
//以写入方式打开d.dat文件
if ((fp1=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
// 写\流\文件
fputs(str,fp1); fputs(\
fclose(fp1); //关闭文件
// 以读方式打开d.dat文件
if ((fp1=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
// 循环从\流\文件读取字符,并显示 char ch;
while ((ch=fgetc(fp1))!=EOF) cout< fclose(fp1); //关闭文件 }
#include #include #include #include void main(void) { //变量声明 char ch; FILE *fp1;
//以写入方式打开d.dat文件
if ((fp1=fopen(\ { cout<<\ cout<<\ exit(1); //结束程序执行 }
//循环从键盘上读取字符,写入\流\文件 cout<<\ cin>>ch;
while (ch!='*') {
fputc(ch,fp1); //将字符写到fp1指向的\流\文件中 cin>>ch; }
fclose(fp1); //关闭文件
// 以读方式打开d.dat文件
if ((fp1=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
// 循环从\流\文件读取字符,并显示 while ((ch=fgetc(fp1))!=EOF) cout< fclose(fp1); //关闭文件 }
#include #include #include #include main() {
//声明变量 int i=0;
char p[100]; // 声明输入缓冲区 FILE *fp1; // 声明文件指针变量
//以写入方式打开d.dat文件
if ((fp1=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
17
// 写文件操作
for (i=1;;i++) { //无条件循环 cout<
cin>>p; //从键盘上输入数据
if (stricmp(p,\ //如果输入的字符串为end, cout<<\ cout<<\ exit(1); //结束程序执行 }
则结束循环
fputs(p,fp1); //写入文件操作 fputs(\ } else
break; //退出循环 }
fclose(fp1); //关闭文件
// 以读方式打开d.dat文件
if ((fp1=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
// 循环从文件读取字符,并显示 while (fgets(p,100,fp1)!=NULL) cout<
#include #include #include #include #include #define MAX 10 main() {
//声明变量 int i,n;
FILE *fp1; // 声明文件指针变量
//以写入方式打开d.dat文件
if ((fp1=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
// 写文件操作
for (i=1;i<=MAX;i++) {
n=rand(); //产生1个整数随机数 putw(n,fp1); cout< cout< fclose(fp1); //关闭文件
// 以读方式打开d.dat文件
if ((fp1=fopen(\ {
// 循环从\流\文件读取字符,并显示 while ((n=getw(fp1))!=EOF) cout< fclose(fp1); //关闭文件 }
#include #include #include #include #include #define MAX 3 main() {
//定义结构类型 struct student { int num;
char name[10]; float grade; };
//声明数组和变量 student st[3]; int i;
FILE *fp1; // 声明文件指针变量
//以写入方式打开d.dat文件
if ((fp1=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
//从键盘上读数据,写入文件
cout<<\ num name grade\ for (i=0;i>st[i].num; cin>>st[i].name; cin>>st[i].grade;
fprintf(fp1,\ }
fclose(fp1); //关闭文件
// 以读方式打开d.dat文件
if ((fp1=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
// 循环从\流\文件读取字符,并显示
18
student t; while ((fscanf(fp1, FILE *fp1;
\ { cout< fclose(fp1); //关闭文件 }
#include #include #include #include int main(void) {
FILE *fpd,*fpw; // 声明FILE结构指针变量 unsigned char dw; int i=0;
//以二进制读方式打开Calc.exe文件
if((fpd=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
// 以二进制写方式打开test.exe文件 if((fpw=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
// 二进制文件读写操作,每次指定读写1个字节 while(!feof(fpd)) { //使用feof()判断文件尾 fread(&dw, 1, 1, fpd); fwrite(&dw, 1, 1, fpw); }
// 关闭文件 fclose(fpd); fclose(fpw);
//执行Calc.exe和Calc.exe文件
cout<<\ system(\ cout<<\ cout<<\ system(\}
#include #include #include #include void main(void) { //声明变量 int i; char ch;
//以写入方式打开d.dat文件
if ((fp1=fopen(\ { cout<<\ cout<<\ exit(1); //结束程序执行 }
//循环从键盘上读取字符,写入文件 cout<<\ cin>>ch;
while (ch!='*') {
fputc(ch,fp1); //将字符写到fp1指向的\流\文件中 cin>>ch; }
cout<<\ fclose(fp1); //关闭文件
//以读方式打开d.dat文件
if ((fp1=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
//循环从文件读取字符,并显示 while ((ch=fgetc(fp1))!=EOF) cout< cout< //以下按倒序方式读取文件中的字符,并显示 for (i=-1;;i--) {
fseek(fp1,i,2); //设置文件指针,偏移量为i,相对文件尾
if ((ch=fgetc(fp1))!=EOF) cout< break; }
cout< //以下读取\流\文件中偶数位置上的字符,并打印 long position; for (i=0;;i=i+2) {
fseek(fp1,i,0); //设置文件指针,偏移量为i,相对文件头
position=ftell(fp1);
if ((ch=fgetc(fp1))==EOF) //遇到文件尾,则退出,否则打印读取的字符 break; else {
cout< cout< fclose(fp1); //关闭文件 }
19
#include #include #include #include #define MAX 5
//显示数组的数据
void show_array(double x[],int size) { for(int i=0;i//main函数测试数组数据的文件读写 int main(void) {
//声明变量
FILE *fp; // 声明FILE结构指针变量 int i;
double a[MAX]={1.0,1.2,1.4,1.6,1.8};
//显示数组a的数据 cout<<\
show_array(a,MAX);
//打开d.dat文件
if ((fp=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
//以单个元素对数组进行文件读操作 for(i=0;i fwrite(&a[i], sizeof(double), 1, fp); }
rewind(fp); //恢复读写指针的位置
//以单个元素对数组进行文件读操作 double b[MAX];
for(i=0;i if (!feof(fp)) //使用feof()判断文件尾 fread(&b[i], sizeof(double), 1, fp); else
break; }
cout<<\
show_array(b,MAX);//显示数组b的数据
fclose(fp); // 关闭文件
//打开d1.dat文件
if ((fp=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
//将数组当成数据块写入文件
fwrite(&a, sizeof(double), MAX, fp);
rewind(fp); //恢复读写指针的位置
//将数组当成数据块从文件中读取 double c[MAX];
if (!feof(fp)) //使用feof()判断文件尾 fread(&c, sizeof(double),MAX,fp); cout<<\
show_array(c,MAX); //显示数组c的数据
fclose(fp); // 关闭文件 }
#include #include #include #include #define MAX 5 //定义结构类型 struct student { int num; char name[20]; float grade; };
//显示student结构数据
void show_str(student a,char *name) { cout< cout<//main函数测试结构数据的文件读写 int main(void) {
//声明变量 FILE *fp;
//声明FILE结构指针变量
student st={1001,\
//显示st结构数据 show_str(st,\
//打开d.dat文件
if ((fp=fopen(\ {
cout<<\ cout<<\ exit(1); //结束程序执行 }
//用fprintf()函数写结构数据到文件
fprintf(fp,\
rewind(fp); //恢复读写指针的位置
//用fscanf()函数读文件中的数据赋值给结构并显示 student temp;
20