Linux下建立、開啟、寫入檔案操作
阿新 • • 發佈:2019-01-25
linux下既然把所有的裝置都看作檔案來處理,就要熟練使用linux下檔案操作的相關API。
#include<stdio.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #define LENGTH 100 int main(int argc,char* argv[]) { int fd,len; char str[LENGTH]; char *content="hi!"; char *path="/tmp/test.txt"; if(argc<2){ printf("Usage:Please pass the content as argument!\n"); exit(1); } content=argv[1]; fd=open(path,O_CREAT|O_RDWR,S_IRUSR|S_IWUSR); if(fd<0){ printf("Fail to open or create file!\n"); exit(1); } if(write(fd,content,strlen(content))!=strlen(content)){ printf("write error!\n"); exit(1); } close(fd); if((fd=open(path,O_RDWR))<0){ printf("Fail to open file!\n"); exit(1); } if((len=read(fd,str,LENGTH))<0){ printf("Read file error!\n"); exit(1); } str[len]='\0'; printf("%s\n",str); close(fd); return 0; }
用malloc函式代替陣列str,根據要列印的內容長度動態申請記憶體:
#include<stdio.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> //#define LENGTH 100 int main(int argc,char* argv[]) { int fd,len; // char str[LENGTH]; char *str; char *content="hi!"; char *path="/tmp/test.txt"; if(argc<2){ printf("%s\n",content); printf("Usage:Please pass the content as argument!\n"); exit(1); } content=argv[1]; fd=open(path,O_CREAT|O_RDWR,S_IRUSR|S_IWUSR); if(fd<0){ printf("Fail to open or create file!\n"); exit(1); } if(write(fd,content,strlen(content))!=strlen(content)){ printf("write error!\n"); exit(1); } close(fd); if((fd=open(path,O_RDWR))<0){ printf("Fail to open file!\n"); exit(1); } str=malloc(strlen(content)); if((len=read(fd,str,strlen(content)))<0){ printf("Read file error!\n"); exit(1); } // str[len]='\0'; printf("%s\n",str); free(str); close(fd); return 0; }
歡迎大家掃描下方二維碼關注我的個人微信公眾號,一起交流學習,謝謝。