1. 程式人生 > >Linux下建立、開啟、寫入檔案操作

Linux下建立、開啟、寫入檔案操作

    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;
}

歡迎大家掃描下方二維碼關注我的個人微信公眾號,一起交流學習,謝謝。