我想使用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);
我的记录struct和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];
};
程序以&#34;写入错误&#34;退出。 有什么建议?我怎么能在这个问题上深入挖掘?
答案 0 :(得分:2)
引用open()的手册页:
参数标志必须包含以下访问模式之一:O_RDONLY,O_WRONLY或O_RDWR。这些请求分别以只读,只写或读/写方式打开文件。
你的公开电话显然没有跟随。因此,将O_WRONLY或O_RDWR添加到您的选项中。
答案 1 :(得分:0)
int t = open(“ test1.txt”,O_WRONLY | O_APPEND);
使用此模式,它将附加到文件末尾;
示例代码: //确保已创建文件。
int main()
{
int t = open("test1.txt", O_WRONLY | O_APPEND);
char avd[100];
printf("ENTER THE DATA - ");
scanf("%s",avd);
write(t,avd,12);
close(t);
}