gpt4 book ai didi

linux - 使用 linux 系统调用附加到文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:42 25 4
gpt4 key购买 nike

我想使用 linux 系统调用将我的记录附加到二进制文件。我是 Linux 的初学者,甚至是 C 语言的初学者。

到目前为止我得到了:

int file;

struct rec new_record=addNewEntry();

file=open("mydatabase.db",O_APPEND | O_CREAT);

if (file<0)
{
printf("Error at opening the file\n");
return 1;
}

if (write(file, &new_record, sizeof(new_record)) < 0){
printf("Writing error\n");
return 1;
}

close(file);

我的记录结构和 addNewEntry 函数:

struct rec addNewEntry(){

//init
char name[32];
char team[32];
char city[32];
char date[32];
int max;
int cost;

//input
printf("Type name: \n");
scanf("%s" , name);

printf("Type team: \n");
scanf("%s" , team);

printf("Type city: \n");
scanf("%s" , city) ;

printf("Type date: \n");
scanf("%s" , date);

printf("Type guests limit: \n");
scanf("%d", &max);

printf("Type price: \n");
scanf("%d", &cost);

//create record
struct rec record;

strncpy(record.name, name, 32);
strncpy(record.team, team, 32);
strncpy(record.date, date, 32);
strncpy(record.city, city, 32);

record.max = max;
record.cost = cost;

return record;
}

struct rec
{

int max,cost;
char name[32];
char team[32];
char city[32];
char date[32];
};

程序退出并显示“写入错误”。有什么建议吗?我怎样才能更深入地研究这个问题?

最佳答案

引用 open() 的手册页:

The argument flags must include one of the following access modes: O_RDONLY, O_WRONLY, or O_RDWR. These request opening the file read-only, write-only, or read/write, respectively.

您的公开电话显然没有遵循。因此,将 O_WRONLY 或 O_RDWR 添加到您的选项中。

关于linux - 使用 linux 系统调用附加到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22697414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com