标题:请高手帮忙,关于unix下文件操作
取消只看楼主
刮目相看
Rank: 2
等 级:论坛游民
帖 子:25
专家分:30
注 册:2009-11-23
结帖率:50%
已结贴  问题点数:10 回复次数:0 
请高手帮忙,关于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进制写入?
这个地方不懂。
谢谢大家。


搜索更多相关主题的帖子: unix 文件 
2010-03-06 23:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-298729-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.296739 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved