1、 实验7 文件 一、实验目的 1.熟悉文件和文件指针的概念以及文件指针的定义方法。 2.掌握文件打开和关闭的概念和方法。 3.掌握常用的关于文件操作库函数的使用。 二、实验内容步骤 (一)实验准备 C语言中处理文件的一般步骤为: (1)包含stdio.h头文件:# include "stdio.h" (2)定义FILE类型文件指针:FILE *fp; (3)打开文件, 建立文件指针和文件的联系: fp=fopen("文件名","打开方式"); (4)根据需要选择合适
2、的文件读写函数对文件进行读写操作。
(5)关闭文件:fclose(fp);
(一)按要求设计以下程序,并调试分析运行结果 。(此部分完成在实验报告上)
1.给定程序sy7-1.c,函数fun的功能是求两个形参的乘积和商,其结果存入形参指针所指的地址中,函数 io实现数据的输入和输出。假设输入文件sy7-1.in有数据61.82和12.65,则两个数的乘积和商分别为782.02300和4.886957 。main函数调用函数 io 。
请改正程序中的错误,使程序能得出正确结果。注意:不得增行或删行,也不得更改程序结构。
源程序如下:
# include 3、h>
void fun(double a,b,*x,*y)
{ x=a*b; y=a/b; }
io()
{ int i;
double a,b,c,d;
file *rf,*wf;
rf=fopen("sy7-1.in","r");
wf=fopen("sy7-1.out","w");
fscanf(rf,"%lf%lf",&a,&b);
fun(a,b,c,d);
fprintf("c=%lf\nn=%lf\n",c,d);
printf("c=%lf\nn=%lf\n",c,d);
fclose(rf);
4、fclose(wf);
}
void main()
{ double a,b,c,d;
clrscr();
io();
}
修改后的:
# include 5、"%lf%lf",&a,&b);
fun(a,b,&c,&d);
fprintf(wf,"c=%lf\nn=%lf\n",c,d);
printf("c=%lf\nn=%lf\n",c,d);
fclose(rf);
fclose(wf);
}
void main()
{ double a,b,c,d;
io();
}
2.请用函数调用方式编写程序sy7-2.c,要求能实现:
(1)在被调函数中求出1到1000之内能被7或11整除、但不能被7或11同时整除的所有整数,并把它们放到数组a中。
(2)在主函数中将符合上述条件的整数个数和所 6、有整数输出到屏幕以及文件sy7-2.dat中。(要求每行输出10个数)
# include 7、a);
printf("共找到符合条件的整数个数:%d\n",n);
fprintf(fp,"共找到符合条件的整数个数:%d\n",n);
for(i=0;i 8、ert 对a进行转置运算,并将结果存放在另一个二维数组b中,最后在主函数中输出结果。
#include 9、) {
fputc('\n', fp);
putchar('\n');
}
}
++p;
}
fclose(fp);
return 0;
}
4.已知磁盘上有的sy7-4.txt文件中含有一个长度不超过80个字符的字符串,用函数调用方式编写程序sy7-4.c。要求实现:
(1) 在被调函数exchange中,将该字符串中偶数位置(从左起第1个字符为0位,视为偶数位置)上的小写字母转换成大写字母,奇数位置上的大写字母转换成小写字母。不是英文字母的字符则不转换。例如:字符串student 123 HELLO!转换后为StUdEnT 12 10、3 HeLlO!
(2) 在主函数中,完成字符串的读入,同时将转换后的字符串输出到屏幕。
# include 11、y7-4.txt","r");
if(fp==NULL )
{ printf("cannot open infile\n");
exit(0);
}
fgets(a,80,fp);
printf("原字符串是:%s\n",a);
exchange(a);
printf("处理后的字符串是:%s\n",a);
}
5.用指针编写程序sy7-5.c实现:将用户输入的由数字字符和非数字字符组成的字符串(字符个数不超过256个)中的数字提取出来,例如:输入“asd123rt456,lg789”,则提取的数字分别是123、456和789。将结果显示在屏幕上, 12、同时输出到文件sy7-5.dat中(要求每个数字一行)。
#include






