资源描述:
《精通linux c编程 2》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、3.文件操作1、编写一个程序,打开一个文本文件,读取其中内容,将其复制到一个新建文件中。//filecopy.c#include#include#include#include#definePERMS0666#defineDUMMY0#defineBUFSIZE1024intmain(intargc,char*argv[]){intsource_fd,target_fd,num;chariobuffer[BUFSIZE];if(argc!=3){printf("参数个数不正确!");return1;}i
2、f((source_fd=open(*(argv+1),O_RDONLY,DUMMY))==-1){printf("文件打开错误!");return2;}if((target_fd=open(*(argv+2),O_WRONLY
3、O_CREAT,PERMS))==-1){printf("创建文件失败!");return3;}while((num=read(source_fd,iobuffer,BUFSIZE))>0)if(write(target_fd,iobuffer,num)!=num){printf("文件写入失败");return4;}close(source_fd);cl
4、ose(target_fd);return0;//编译gccfilecopy.c-ofilecopy//运行./filecopyfilecopy.cfilecopy副本.c}2、编写一个程序,打开一个文件,将它截断至原来长度的1/2。//filetruncate.c#include#include#include#includeintmain(intargc,char*argv[]){inti,fd;structstatbuf;if(argc!=2){printf("参数个数不正确!");return1
5、;}if((fd=open(argv[1],O_RDWR))<0){printf("%s打开失败!",argv[1]);return2;}if(fstat(fd,&buf)<0){printf("错误!");return3;}else{i=buf.st_size;}printf("%s大小:%d字节",argv[1],i);if(ftruncate(fd,i/2)<0){printf("%s截断失败!",argv[1]);return4;}printf("%s截断成功",argv[1]);//编译gccfiletruncate.c-ofiletruncate//运行./file
6、truncatetest.c}3、编写一个程序,打开一个文本文件,然后把此文件中小写字母转换为大写字母,其他字符不变。其中文件名作为命令行参数。//atoA.c#include#include#include#include#defineBUFSIZE1024intmain(intargc,char*argv[]){intfd,num,i;chariobuffer[BUFSIZE];if(argc!=2){printf("参数个数不正确!");return1;}if((fd=open(*(argv+1)
7、,O_RDWR))==-1){printf("文件打开错误!");return2;}while((num=read(fd,iobuffer,BUFSIZE))>0){for(i=0;i='a'&&iobuffer[i]<='z'){iobuffer[i]-=32;}}lseek(fd,-num,SEEK_CUR);//向前偏移文件指针if(write(fd,iobuffer,num)!=num){printf("文件写入失败");return3;}}close(fd);return0;//编译gccatoA.c-oatoA
8、//运行./atoAtest.c}4、编写一个程序,读取当前工作目录下的内容,并将其打印输出到终端。//readwd.c#include#include#include#include#includeintmain(intargc,char*argv[]){charpath[PATH_MAX+1