Linux學習之檔案操作

古月忘道發表於2024-08-17

程式

點選檢視程式碼
/*
    建立命令列引數輸入名字的檔案
    儲存使用者輸入的學生姓名年齡和成績
*/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

struct Student
{
    char name[25];
    int age;
    double score;
} stu = {"司徒寇", 25, 59.99};

int main(int argc, char *argv[]) // 程式的入口點,接受命令列引數。
{
    if (argc < 2)
    {
        printf("請命令列輸入檔名!\n");
        exit(-1); // 結束當前程序
    }

    int fd;
    fd = open(argv[1], O_WRONLY); // 寫入模式
    if (-1 == fd)                 // 檔案不存在
    {
        printf("開啟%s失敗:%m\n", argv[1]); // %m->失敗原因
        printf("嘗試建立檔案!\n");
        fd = open(argv[1], O_WRONLY | O_CREAT, 0666);
        if (-1 == fd)
        {
            printf("建立%s失敗!失敗原因:%m\n", argv[1]);
            exit(-1);
        }
        printf("建立檔案成功!\n");
    }
    printf("開啟檔案成功!\n");
    printf("%s - %d - %g\n", stu.name, stu.age, stu.score);

#if 0
	write(fd,(const char*)&stu,sizeof(stu));
#else
    write(fd, stu.name, sizeof(stu.name));
    write(fd, (const char *)&(stu.age), sizeof(stu.age));
    write(fd, (const char *)&(stu.score), sizeof(stu.score));
#endif
    printf("over!\n");
    close(fd);
}

執行

在終端執行以下操作:


第一次執行結果:

第二次執行結果:

相關文章