文件编程(二)
1.文件编程练习1
实现linux cp命令的代码
#include<sys/stat.h> #include<fcntl.h> #include<stdio.h> #include<unistd.h> #include<string.h> #include<stdlib.h> int main(int argc,char **argv){ int fdSrc; int fdDes; char *readBuf = NULL; if(argc != 3){ printf("error"); exit(-1); } fdSrc = open(argv[1],O_RDWR); int size = lseek(fdSrc,0,SEEK_END); readBuf = (char *)moalloc(sizeof(char)*size + 8); lseek(fdSrc,0,SEEK_SET); int n_read = read(fdSrc,readBuf,size); fdDes = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600); int n_wirte = write(fdDes,readBuf,strlen(readBuf)); close(fdSrc); close(fdDes); return 0; }
2.文件编程练习2
修改程序的配置文件
#include<stdio.h> #include<unistd.h> #include<string.h> #include<stdlib.h> int main(int argc,char **argv){ int fdSrc; char *readBuf = NULL; if(argc != 2){ printf("error"); exit(-1); } fdSrc = open(argv[1],O_RDWR); int size = lseek(fdSrc,0,SEEK_END); readBuf= (char *)malloc(sizeof(char)*size +8); int n_read = read(fdSrc,readBuf,size); char *p = strstr(readBuf,"LENG="); if(p == NULL){ printf("not found\n"); exit(-1); } p = p+strlen("LENG="); *P = '5'; int n_wirte = write(fdSrc,readBuf,strlen(readBuf)); close(fdSrc); return 0; }
3.文件如何记录一个结构体
#include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #include<stdio.h> #include<unistd.h> #include<string.h> #include<stdlib.h> struct Test { int a; char b; }; int main() { int fd; int i; struct Test data[2] = {{100,'a'},{200,'c'}}; struct Test data2[2]; fd = open("./file5",O_RDWR|O_CREAT|O_TRUNC); int n_wirte = write(fd,&data,sizeof(struct Test)*2); lseek(fd,0,SEEK_SET); int n_read = read(fd,&data2,sizeof(struct Test)*2); for(i=0;i<2;i++){ printf("read : %d ,%c \n",data[i].a,data[i].b); } close(fd); return 0; }
4.标准c库对文件操作引入
open 和fopen
open是unix系统调用函数
fopen是标准c语言库函数
#include<stdio.h> #include<string.h> int main() { FILE *fp; cahr *str = "linqilaoshi hen shuai"; char readBuf[128] = {0}; fp = fopen("./zhang.text","w+"); fwrite(str,sizeof(char),strlen(str),fp); fseek(fp,0,SEEK_SET); fread(readBuf,sizeof(char),strlen(str),fp); printf("read data:%s\n",readBuf) fclose(fp); return 0; }
5.文件其他函数讲解
fputc()
feof()
fgetc()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!