程式
點選檢視程式碼
/*
建立命令列引數輸入名字的檔案
儲存使用者輸入的學生姓名年齡和成績
*/
#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);
}
執行
在終端執行以下操作:
第一次執行結果:
第二次執行結果: