网站开发技术

记点笔记、 学点技术 欢迎交流建站技术。本站关注lamp技术

您尚未登录。

#1 2015-01-27 14:40:01

admin
管理员

linux c语言, 文件的创建

文件的创建可以使用 open 函数, 可以使用 crate 函数。

函数的原型可以查看 linux 系统文件函数总结

使用的方法。

第一:使用 open

open 是用来打开一文件的,但是可以用 O_CREATE 创建。

#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>

int main() {
    int fd = -1;

    if((fd = open("not_a_file.txt", O_RDONLY)) == -1 ) {
        // 用只读的方式, 如果打开失败
        perror("file open faile ");
        // 使用open 创建一个文件
        fd = open("not_a_file.txt", O_CREAT | O_EXCL, 0644);
        if(fd == -1) {
            perror("open -- O_CREAT fail");
        } else {
            // 这里表示通过 open -- O_CREAT 创建文件成功
            fd = open("not_a_file.txt", O_CREAT | O_EXCL, 0644);
            if(fd == -1) {
                // 因为文件已经创建过了, 示例会报错
                perror("error");
            }
        }
    }

    close(fd);
    return 0;

}

输出的结果

file open faile : No such file or directory
error: File exists


第二种:使用系统函数 creat 

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>

int main() {
    int count_files , i, fp;
    char * p[] = {
        "file_a", "file_b", "file_c"
    };

    count_files = sizeof(p) / sizeof (char *);

    for(i = 0; i < count_files; i++ ) {
        fp = creat(p[i] , 0644);
        if(fp == -1) {
            perror("creat fiel fail: ");
        } else {
            printf("create file #%s# success\n" , p[i]);
        }
        close(fp);
    }

    return 0;

}

输出的结果

create file #file_a# success
create file #file_b# success
create file #file_c# success

这里需要注意,如果原来的文件存在, 那么老文件将会被覆盖。


ipbbs.net

离线

页脚

Powered by FluxBB