C语言:如何将l录入信息用文件保存下来,而不是用数据库。
#include<stdio.h>#definen3voidmain(){inti;structstaff{longintnum;charname[20];charsex...
#include<stdio.h>
#define n 3
void main()
{ int i;
struct staff
{long int num;
char name[20];
char sex;
char addr[20];
int IDnum;
int borndate;
}staffs[n];
for(i=0;i<n;i++)
{printf("请输入员工编号");
scanf("%d",&staffs[i].num);
printf("\n请输入员工姓名");
scanf("%s",&staffs[i].name);
printf("\n请输入员工性别");
scanf("%s",&staffs[i].sex);
printf("\n请输入员工身份证号");
scanf("%d",&staffs[i].IDnum);
printf("\n请输入员工出生日期");
scanf("%d",&staffs[i].borndate);
printf("\n请输入员工住址");
scanf("%s",&staffs[i].addr);
printf("\n");
for(i=0;i<n;i++)
{printf("员工编号%d\n",staffs[i].num);
printf("员工姓名%s\n",staffs[i].name);
printf("员工性别%s\n",staffs[i].sex);
printf("员工身份证号%d\n",staffs[i].IDnum);
printf("员工出生日期%d\n",staffs[i].borndate);
printf("员工住址%s\n",staffs[i].addr);
}
}
}
请在这个程序上修改 使其能存入一个文件中. 展开
#define n 3
void main()
{ int i;
struct staff
{long int num;
char name[20];
char sex;
char addr[20];
int IDnum;
int borndate;
}staffs[n];
for(i=0;i<n;i++)
{printf("请输入员工编号");
scanf("%d",&staffs[i].num);
printf("\n请输入员工姓名");
scanf("%s",&staffs[i].name);
printf("\n请输入员工性别");
scanf("%s",&staffs[i].sex);
printf("\n请输入员工身份证号");
scanf("%d",&staffs[i].IDnum);
printf("\n请输入员工出生日期");
scanf("%d",&staffs[i].borndate);
printf("\n请输入员工住址");
scanf("%s",&staffs[i].addr);
printf("\n");
for(i=0;i<n;i++)
{printf("员工编号%d\n",staffs[i].num);
printf("员工姓名%s\n",staffs[i].name);
printf("员工性别%s\n",staffs[i].sex);
printf("员工身份证号%d\n",staffs[i].IDnum);
printf("员工出生日期%d\n",staffs[i].borndate);
printf("员工住址%s\n",staffs[i].addr);
}
}
}
请在这个程序上修改 使其能存入一个文件中. 展开
3个回答
展开全部
程序中还有一些错误,更正下。
#include<stdio.h>
#define n 3
void main()
{
int i;
FILE *fp;//文件指针
struct staff
{
long int num;
char name[20];
char sex;
char addr[20];
int IDnum;
int borndate;
}staffs[n];
for(i=0;i<n;i++)
{
printf("请输入员工编号");
scanf("%d",&staffs[i].num);
printf("\n请输入员工姓名");
scanf("%s",&staffs[i].name);
printf("\n请输入员工性别");
scanf("\n%c",&staffs[i].sex);//字符用%c匹配
printf("\n请输入员工身份证号");
scanf("%d",&staffs[i].IDnum);
printf("\n请输入员工出生日期");
scanf("%d",&staffs[i].borndate);
printf("\n请输入员工住址");
scanf("%s",&staffs[i].addr);
printf("\n");
//for(i=0;i<n;i++)多余
{printf("员工编号%d\n",staffs[i].num);
printf("员工姓名%s\n",staffs[i].name);
printf("员工性别%c\n",staffs[i].sex);
printf("员工身份证号%d\n",staffs[i].IDnum);
printf("员工出生日期%d\n",staffs[i].borndate);
printf("员工住址%s\n",staffs[i].addr);
}
}
fp=fopen("out.dat","wb");//在当前程序运行目录下自动建立out.dat文件,并用二进制写方式打开文件
if(fp==NULL)
{
printf("打开文件出错\n");
return ;
}
//用fread读取与fwrite匹配
if(fwrite(staffs,sizeof(staff),3,fp)!=3)//直接写入3个记录
{
printf("写文件出错\n");
return ;
}
fclose(fp);
printf("写入完毕!\n");
}
#include<stdio.h>
#define n 3
void main()
{
int i;
FILE *fp;//文件指针
struct staff
{
long int num;
char name[20];
char sex;
char addr[20];
int IDnum;
int borndate;
}staffs[n];
for(i=0;i<n;i++)
{
printf("请输入员工编号");
scanf("%d",&staffs[i].num);
printf("\n请输入员工姓名");
scanf("%s",&staffs[i].name);
printf("\n请输入员工性别");
scanf("\n%c",&staffs[i].sex);//字符用%c匹配
printf("\n请输入员工身份证号");
scanf("%d",&staffs[i].IDnum);
printf("\n请输入员工出生日期");
scanf("%d",&staffs[i].borndate);
printf("\n请输入员工住址");
scanf("%s",&staffs[i].addr);
printf("\n");
//for(i=0;i<n;i++)多余
{printf("员工编号%d\n",staffs[i].num);
printf("员工姓名%s\n",staffs[i].name);
printf("员工性别%c\n",staffs[i].sex);
printf("员工身份证号%d\n",staffs[i].IDnum);
printf("员工出生日期%d\n",staffs[i].borndate);
printf("员工住址%s\n",staffs[i].addr);
}
}
fp=fopen("out.dat","wb");//在当前程序运行目录下自动建立out.dat文件,并用二进制写方式打开文件
if(fp==NULL)
{
printf("打开文件出错\n");
return ;
}
//用fread读取与fwrite匹配
if(fwrite(staffs,sizeof(staff),3,fp)!=3)//直接写入3个记录
{
printf("写文件出错\n");
return ;
}
fclose(fp);
printf("写入完毕!\n");
}
追问
如何用文本文件保存 ?fp=fopen("out.dat","wb");// 是把wb换成w+吗?
追答
w就是默认的文本方式,可以写成wt,w+是可写并可读取,a是文本追加。
一般结构体读写建议用二进制方式,这涉及内存对齐问题。
如果想看看文本文件具体内容,可以逐行写入,使用fprintf,对结构体的每个成员逐一写入。
上面这些函数和术语如果不太清楚,可以相应在百度百科中查询。
展开全部
public class FileControl {
File file = new File("D:\\room.txt");// 指定序列化路径
public void write(List<Room> roomList) {
FileOutputStream fos;// 用于将数据写入文件流
try {
fos = new FileOutputStream(file);
// 创建一个对象输出流,装载文件输出流
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(roomList);// 写对象
oos.flush();// 清空缓冲区数据,close之前
oos.close();// 关闭输出流
fos.close();// 关闭文件流
} catch (Exception e) {
e.printStackTrace();
}
}
public List<Room> read() {
FileInputStream fis;
ObjectInputStream ois;
List<Room> roomList = new ArrayList<Room>();
try {
fis = new FileInputStream(file);
ois = new ObjectInputStream(fis);
roomList = (List<Room>) ois.readObject();// 读对象
ois.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
return roomList;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那就用FILE *啊。很简单的。
追问
请详细点 我是一个新手
追答
这里有一个小例子,看看
//电话薄的写入
write(){
FILE *fp;
int i;
fp=fopen("E:\\abc.txt","wb");
if(fp==NULL){
printf("文件创建失败!");
exit(0);
}
num=3;
for(i=0;i<num;i++){
printf("请输入第%d个人的姓名,电话号码,家庭住址:\n",i+1);
scanf("%s %s %s",person[i].name,person[i].number,person[i].address);
fwrite(&person[i],sizeof(struct people),1,fp);
}
fclose(fp);
system("cls");//清屏
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询