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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值