| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 542 人关注过本帖
标题:请高手帮忙,关于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进制写入?
这个地方不懂。
谢谢大家。


2010-03-06 23:55
快速回复:请高手帮忙,关于unix下文件操作
数据加载中...
 
   



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

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