实验三缓冲IO和特殊文件.docx
实验三缓冲 IO 和特殊文件实验目的1. 了解和掌握基于流的文件 I/O 程序设计2. 掌握特殊文件的程序设计方法实验内容1. 设计一程序,要求用带缓存的流文件 I/O 操作,在“ ./tmp ”目录下 , 打开名称为 “tmpfile ”的文件。如果该文件不存在,则创建此文件;如果存在,将文件清空后关闭。#include<stdio.h>#include<stdlib.h>int main()FILE * fp;if(fp=fopen("./tmp/tmpfile","w+")=NULL)perror("open file failed");elseprintf("file openedn");fclose(fp);2. 设计一程序, 要求用带缓存的流文件 I/O 操作,利用 fputc 函数把键盘上输入的字符串写入文件“ ./tmp/2 - 2tmp”, 如果该文件不存在,则创建此文件;多次运行程序,多次输入字符串后,文件“ /tmp/2 - 2tmp”中只保存最后一次输入的字符串(若要保存全部输入的字符串,如何改写程序?) 。#include<stdio.h>main()FILE *fp;char ch;if(fp=fopen("./tmp/2-2tmp","w+")=NULL)perror("file open error");elseprintf("input the string:n");while(ch!=n)fputc(ch=fgetc(stdin),fp);fclose(fp);若要保存全部输入的字符串,将 if(fp=fopen("./tmp/2-2tmp","w+")=NULL)中 "w+" 改为"a+" 。3设计一程序, 要求新建一个目录 newdir 打开 newdir 目录并输出该目录下的目录名和和它的子目录childdir,预设权限为inode ,关闭该目录文件。rwx x x,#include<stdio.h>#include<dirent.h>#include<sys/types.h>#include<sys/stat.h>main()DIR *dir;int d;struct dirent *ptr;if(d=mkdir("./newdir",0711)=-1)perror("directory created failed!");if(d=mkdir("./newdir/childdir",0711)=-1)perror("directory created failed!");elsedir=opendir("./newdir");while (ptr=readdir(dir)!=NULL)printf("new dir is:%sinode :%dn",ptr->d_name,ptr->d_ino);closedir(dir);4. 设计一程序,要求为“ /bin/ls ”文件建立一个软链接“ ls1 ”和一个硬链接“ ls2 ”,并查看两个链接文件和“ /bin/ls ”文件,并运行 ./ls1 和 ./ls2 ,查看结果。#include<stdio.h>#include<unistd.h>main()symlink("/bin/ls","./ls1");link("/bin/ls","ls2");system("ls ./ls1 -l");system("ls ./ls2 -l");system("ls /bin/ls");