当前位置:文档之家› 操作系统实验五

操作系统实验五

《操作系统》实验指导(五)
Linux文件操作与命令接口(综合性 2学时)
1、实验目的:
1)熟悉LINUX文件系统;
2)通过编写文件操作的程序,进一步掌握操作系统的文件管理机制。

3)掌握简单的用户接口(字符菜单)的设计方法。

2、实验内容:
(1)编写程序p.c,其功能是从键盘输入两个实数,输出这两个实数的平方和,生成可执行文件为pow。

记录编译的命令和结果。

#include <stdio.h>
main()
{
double a,b;
scanf("%lf%lf",&a,&b);
printf("%lf",a*a+b*b);
}
(2)在LINUX下编写显示文件内容的程序mycat.c,要求在运行时能提示输入文件名,当完成文件名输入后,在屏幕上显示文件内容。

#include<stdio.h>
main()
{
FILE *fp;
char buff[50];
printf("请输入文件名:");
scanf("%s",buff);
fp=fopen(buff,"r");
char ch;
while((ch=fgetc(fp))!=EOF)
putchar(ch);
fclose(fp);
}
显示pow.c的内容
(3)设计一个字符菜单的接口界面,其功能是能根据用户的选择,运行相应的程序模块,实现诸如改名文件、删除文件、显示文件等功能。

(提示:要先将各模块分别命名成各函数,以便于主程序(main.c)调用。

可参考程序中的命名方法,各函数名可以自定。

) 参考程序main.c:
#include <stdio.h>
void create_f()
{
char filename[20];
FILE*fp;
printf("请输入创建的文件名:");
scanf("%s",filename);
if((fp=fopen(filename,"wb"))==NULL)
{ printf("创建文件失败!\n"); getchar(); return; }
printf("%s:创建完成\n",filename);
}
void copy_f()
{
char filename1[20];
char filename2[20];
int c;
printf("请输入要复制的文件名:");
scanf("%s",filename1);
printf("请输入复制成的文件名:");
scanf("%s",filename2);
FILE *fp1, *fp2;
fp1=fopen(filename1, "rb");
if(fp1==NULL){
printf("要复制的文件不存在\n");
return;
}
fp2= fopen(filename2, "wb");
if(fp2==NULL){
printf("复制文件失败\n");
return ;
}
while((c=fgetc(fp1))!=EOF){
fputc(c, fp2);
}
fclose(fp1);
fclose(fp2);
printf("%s to %s复制完成\n",filename1,filename2); }
void type_f()
{
char filename[20];
char ch;
FILE *fp;
printf("请输入要输入的文件名:");
scanf("%s",filename);
while((fp=fopen(filename, "w")) == NULL) {
printf("无法打开文件\n");
return;
}
ch = getchar();
printf("请输入准备存储到文件的字符串,#为结束\n"); ch = getchar();
while (ch != '#') {
fputc(ch, fp);
putchar(ch);
ch = getchar();
}
fclose(fp);
putchar(10);
}
void rename_f()
{
char filename1[20];
char filename2[20];
printf("请输入要重命名的文件:"); scanf("%s",filename1);
printf("重命名文件,请输入新名字:"); scanf("%s",filename2);
rename(filename1,filename2);
}
void delete_f()
{
char filename[20];
printf("请输入要删除的文件名:\n"); scanf("%s",filename);
remove(filename);
}
main( )
{ int selection;
do {
printf("input selection\n");
printf("1-create file\n");
printf("2-copy file\n");
printf("3-type file\n");
printf("4-rename file\n");
printf("5-delete file\n");
printf("0-quit\n");
scanf("%d", &selection);
getchar( );
switch (selection) {
case 1: create_f (); break;
case 2: copy_f (); break;
case 3: type_f (); break;
case 4: rename_f (); break;
case 5: delete_f (); break;
}
} while (selection !=0);
}
1,创建文件 file1
3.输入文件,file1
2.复制文件file1,生成file2
4.重命名file2为file22
5.删除文件file22
3、实验结果分析:
(对上述实验各题所使用的原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析。


直接在LINUX平台命令编译C语言,不容易找出错误。

4、总结:你对本次实验有什么体会或看法。

对C语言的文件知识基本上都忘了,很久没有使用。

相关主题