为什么存入txt文件什么内容也没有?

被坑的瓜 2013-07-11 08:28:31
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 20

struct Student//定义一个通讯录结构体
{
char name[30];//学生姓名
char sex[10];//学生性别
int phone[20];//学生联系电话
int age[5];//学生年龄
char add[30];//学生地址
}stu[N];//定义学生的结构体变量为stu

//***********************************************
//录入信息
//***********************************************
void luru()
{
FILE *fp;
int i;
//输入学生的数据,存放在数组stu中
printf("请输入学生姓名:");
scanf("%s",stu[N].name);
printf("请输入学生性别:");
scanf("%s",stu[N].sex);
printf("请输入学生电话:");
scanf("%d",stu[N].phone);
printf("请输入学生年龄:");
scanf("%d",stu[N].age);
printf("请输入学生地址:");
scanf("%s",stu[N].add);

//把数据转存到磁盘文件中

if((fp=fopen("通讯录.txt","a+"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
for(i=0;i<N;i++)
{
if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
printf("file write error\n");
}
fclose(fp);
...全文
357 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
被坑的瓜 2013-07-11
  • 打赏
  • 举报
回复
引用 10 楼 qzf362269994 的回复:
你用fprintf写入读出也要格式化读出啊,fscanf,还有你这样写入读取数据当然不行啊, fprintf(fp,"%s,%s,%s,%s,%s\n",stu.name,stu.sex,stu.phone,stu.age,stu.add); fsancf(fp,"%s,%s,%s,%s,%s\n",stu.name,stu.sex,stu.phone,stu.age,stu.add);
你是指改成你这样吗? 给我联系方式吧,我们细聊
qzf362269994 2013-07-11
  • 打赏
  • 举报
回复
你用fprintf写入读出也要格式化读出啊,fscanf,还有你这样写入读取数据当然不行啊, fprintf(fp,"%s,%s,%s,%s,%s\n",stu.name,stu.sex,stu.phone,stu.age,stu.add); fsancf(fp,"%s,%s,%s,%s,%s\n",stu.name,stu.sex,stu.phone,stu.age,stu.add);
被坑的瓜 2013-07-11
  • 打赏
  • 举报
回复
引用 8 楼 qzf362269994 的回复:
[quote=引用 7 楼 u011378272 的回复:] [quote=引用 6 楼 qzf362269994 的回复:] [quote=引用 4 楼 u011378272 的回复:] 上楼那个for循环式起的什么作用呢?我之前也这样写的,然后不对,就没有用for了
你的错误是什么?文件里还是没有信息 ?[/quote] 在输入了过后,txt文件里面是空白,没有任何信息[/quote] 我试过可以正常输入啊,文件里有保存信息啊; 你把全部代码贴出来看看[/quote] #include<stdio.h> #include<stdlib.h> #include<string.h> //#define N 20 FILE *fp; struct Student//定义一个通讯录结构体 { char name[30];//学生姓名 char sex[10];//学生性别 char phone[20];//学生联系电话 char age[5];//学生年龄 char add[30];//学生地址 }stu;//定义学生的结构体变量为stu //*********************************************** //录入信息 //*********************************************** void luru() { if((fp=fopen("通讯录.txt","ab"))==NULL) { printf("文件打开失败!"); exit(1); } else //输入学生的数据,存放在数组stu中 printf("请输入学生姓名:"); scanf("%s",stu.name); printf("请输入学生性别:"); scanf("%s",stu.sex); printf("请输入学生电话:"); scanf("%s",stu.phone); printf("请输入学生年龄:"); scanf("%s",stu.age); printf("请输入学生地址:"); scanf("%s",stu.add); //把数据转存到磁盘文件中 fprintf(fp,"学生姓名:%s\n学生性别:%s\n学生电话:%s\n学生年龄:%s\n学生地址:%s\n",stu.name,stu.sex,stu.phone,stu.age,stu.add); fclose(fp); printf("★★★★★★★★★★★★★恭喜您录入成功!!★★★★★★★★★★★★★★★★ \n"); system("pause"); //网上搜的让程序暂停一段时间 system("cls"); //清屏 return(main()); } //********************************************************* //显示所有信息 //********************************************************* void xianshi() { int i; if((fp=fopen("通讯录.txt","rb"))==NULL) { printf("打开文件错误!"); exit(0); } fread(&stu,sizeof(struct Student),1,fp); printf("%-10s %-10s %4d %4d %-10s",stu.name,stu.sex,stu.phone,stu.age,stu.add); fclose(fp); system("pause"); //网上搜的让程序暂停一段时间 system("cls"); //清屏 return(main()); } int main() { int a,i; for(i=0;i<=39;i++)//循环输出五角星 printf("★"); printf("\n"); printf(" 欢迎进入成都信息工程学院学生通讯录管理系统\n"); printf("\n"); for(i=0;i<=39;i++) printf("★"); printf("\n"); printf("\n"); printf("0.录入信息 |\n"); printf("1.显示所有信息 |\n"); printf("2.查询信息 |\n"); printf("3.修改 |\n"); printf("4.删除信息 |\n"); printf("5. 退出程序 |\n"); printf("\n"); printf("\n"); for(i=0;i<=39;i++) printf("★"); printf("请选择你想要功能的序号,按回车确认:"); scanf("%d",&a); switch(a) { case 0:;luru();break; case 1:;xianshi();break; case 2:; case 3:; case 4:; case 5:; } } 修改过后,能显示了,文件里面也有了,可以编译的时候按1显示信息,会有乱码
qzf362269994 2013-07-11
  • 打赏
  • 举报
回复
引用 7 楼 u011378272 的回复:
[quote=引用 6 楼 qzf362269994 的回复:] [quote=引用 4 楼 u011378272 的回复:] 上楼那个for循环式起的什么作用呢?我之前也这样写的,然后不对,就没有用for了
你的错误是什么?文件里还是没有信息 ?[/quote] 在输入了过后,txt文件里面是空白,没有任何信息[/quote] 我试过可以正常输入啊,文件里有保存信息啊; 你把全部代码贴出来看看
被坑的瓜 2013-07-11
  • 打赏
  • 举报
回复
引用 6 楼 qzf362269994 的回复:
[quote=引用 4 楼 u011378272 的回复:] 上楼那个for循环式起的什么作用呢?我之前也这样写的,然后不对,就没有用for了
你的错误是什么?文件里还是没有信息 ?[/quote] 在输入了过后,txt文件里面是空白,没有任何信息
qzf362269994 2013-07-11
  • 打赏
  • 举报
回复
引用 4 楼 u011378272 的回复:
上楼那个for循环式起的什么作用呢?我之前也这样写的,然后不对,就没有用for了
你的错误是什么?文件里还是没有信息 ?
xiaoliang1201 2013-07-11
  • 打赏
  • 举报
回复
引用 3 楼 qzf362269994 的回复:
写入的时候数组越界了

for(i=0;i<N;i++){
   printf("请输入学生姓名:");
   scanf("%s",stu[i].name);
   printf("请输入学生性别:");
   scanf("%s",stu[i].sex);
   printf("请输入学生电话:");
   scanf("%d",stu[i].phone);
   printf("请输入学生年龄:");
   scanf("%d",stu[i].age);
   printf("请输入学生地址:");
   scanf("%s",stu[i].add);
}
用scanf语句输入时要注意格式,除%s外都要加上取地址符&
被坑的瓜 2013-07-11
  • 打赏
  • 举报
回复
上楼那个for循环式起的什么作用呢?我之前也这样写的,然后不对,就没有用for了
qzf362269994 2013-07-11
  • 打赏
  • 举报
回复
写入的时候数组越界了

for(i=0;i<N;i++){
   printf("请输入学生姓名:");
   scanf("%s",stu[i].name);
   printf("请输入学生性别:");
   scanf("%s",stu[i].sex);
   printf("请输入学生电话:");
   scanf("%d",stu[i].phone);
   printf("请输入学生年龄:");
   scanf("%d",stu[i].age);
   printf("请输入学生地址:");
   scanf("%s",stu[i].add);
}
awsqsh 2013-07-11
  • 打赏
  • 举报
回复
scanf("%s",stu[N].name); N是20啊 stu[20].name 有分配空间吗? 先分配内存,初始化结构体 ; 然后再写、 程序不全。
XFPlus 2013-07-11
  • 打赏
  • 举报
回复
if((fp=fopen("通讯录.txt","a+"))==NULL) { printf("cannot open file\n"); exit(0); } 为什么是 ==NULL 打错了吧 应该是 !=NULL

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧