请高手帮忙,关于unix下文件操作
麻烦大家给看一下。上机有一道题目是这样的:
要求用户输入人员信息,存到文件中。
人员信息的结构体定义如下:
typedef struct{
char nom[20];
int age;
int nb_kids;
}
1.创建文件函数。
给出的原型:int creat(char nom_file[])
形参为创建的文件的名字。
我写了个,但是似乎有问题,请大家帮忙看看:
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<malloc.h>
#include<string.h>
#include <unistd.h>
#define MAX 100
#define OPEN_ERR 1
#define TOUT_VA 0
#define WRITE_ERR 2
/*定义结构体*/
typedef struct
{
char Nom[MAX];
int age;
int nbenfants;
}infos;
int Creation(char* nom_fichier)
{
int size;
int handle;
char temp[MAX];
infos * tmp=(infos *)malloc(sizeof(infos));
/*memset(tmp,0,sizeof(infos));*/
handle=open(nom_fichier,O_CREAT|O_WRONLY|O_TRUNC,S_IRUSR|S_IWUSR);
if(handle==-1)return(OPEN_ERR);
do
{
/*相关信息存入结构体*/
printf("Nom ?age?nb d'enfant?\n");
scanf("%s",tmp->Nom);
scanf("%d",&(tmp->age));
scanf("%d",&(tmp->nbenfants));
/*写入文件*/
size=write(handle,tmp,sizeof(tmp));
if(size!=sizeof(tmp)){close(handle);return WRITE_ERR;}
}while(tmp->age!=-1);
close(handle);
return TOUT_VA;
}
int main()
{
char nom_fichier[]="test";
Creation(nom_fichier);
return 0;
}
为什么我运行完程序,用cat查看新建文件内容,不是我输入的呢?是因为是以2进制写入?
这个地方不懂。
谢谢大家。