网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月06日漏签0天
c语言吧 关注:801,844贴子:4,375,637
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 2回复贴,共1页
<<返回c语言吧
>0< 加载中...

大佬们帮我看看,在baocun函数里,运行了之后文件是空的,

  • 只看楼主
  • 收藏

  • 回复
  • 放大70
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<stdio.h>
#pragma warning(disable:4996)
#include<stdlib.h>
#include<string.h>
struct phonebook
{
char name[20];
char gender[5];
int age;
char number[20];
};
typedef struct phonebook ph;
FILE* fp1;
FILE* fp2;
ph s[100];
int luru(int num)
{
int i;
num += 1;
printf("输入第%d个人的姓名:", num);
scanf("%s", s[num].name);
printf("输入第%d个人的性别:", num);
scanf("%s", s[num].gender);
printf("输入第%d个人的年龄:", num);
scanf("%d", &s[num].age);
printf("输入第%d个人电话号码:", num);
scanf("%s", s[num].number);
printf("存入成功!\n");
return num;
}
int chazhao(int num)
{
char name[20];
int i, t = 0;
printf("输入您想查找的姓名:");
scanf("%s", name);
for (i = 1; i <= num; i++) {
if (strcmp(name, s[i].name) == 0)
{
printf("%s的性别为:%s\n", s[i].name, s[i].gender);
printf("%s的年龄为:%d\n", s[i].name, s[i].age);
printf("%s的电话号码为:%s\n", s[i].name, s[i].number);
t = 1;
}
}
if (t != 1)
{
printf("查找失败\n");
}
return num;
}
int xiugai(int num)
{
int i;
char name[20];
printf("输入您想改的数据的姓名:");
scanf("%s", name);
for (i = 1; i <= num; i++)
{
if (strcmp(name, s[i].name) == 0)
{
printf("输入第%d个人的姓名:", i);
scanf("%s", s[i].name);
printf("输入第%d个人的性别:", i);
scanf("%s", s[i].gender);
printf("输入第%d个人的年龄:", i);
scanf("%d", &s[i].age);
printf("输入第%d个人电话号码:", i);
scanf("%s", &s[i].number);
printf("存入成功!\n");
}
}
return num;
}
int shanchu(int num)
{
char name[20];
int i, j;
printf("输入您想删除的姓名:");
scanf("%s", name);
for (i = 1; i <= num; i++)
{
while (strcmp(name, s[i].name) == 0)
{
s[i] = s[i + 1];
}
}
num = num - 1;
return num;
}
int cd()
{
int num;
printf("1---录入数据\n");
printf("2---按姓名查找数据\n");
printf("3---按姓名修改数据\n");
printf("4---按姓名删除数据\n");
scanf("%d", &num);
return num;
}
void baocun(int num)
{
int i;
if ((fp1 = fopen("phonebook.txt", "wb+")) == NULL)
{
printf("wrong!");
exit(0);
}
fwrite(s, sizeof(ph), num, fp1);
fclose(fp1);
}
void baocun2(int num) {
if ((fp2 = fopen("count.txt", "w+")) == NULL)
{
printf("wrong!");
exit(0);
}
fprintf(fp2,"%d",num);
fclose(fp2);
}
int jiazai(int num)
{
int i;
if ((fp2 = fopen("count.txt", "a+")) == NULL)
{
printf("wrong!");
exit(0);
}
fscanf(fp2, "%d", &num);
fclose(fp2);
if ((fp1 = fopen("phonebook.txt", "rb+")) == NULL)
{
printf("wrong!");
exit(0);
}
for (i = 1; i <= num; i++)
fread(&s[i], sizeof(ph),1, fp1);
fclose(fp1);
return num;
}
int main()
{
int a;
int count = 0;
count = jiazai(count);
while (1)
{
a = cd();
switch (a)
{
case 1:count = luru(count); baocun(count); baocun2(count); break;
case 2:count = chazhao(count); break;
case 3:count = xiugai(count); baocun(count); baocun2(count); break;
case 4:count = shanchu(count); baocun(count); baocun2(count); break;
}
}
return 0;
}


  • 放大70
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
运行了之后文件有大小,但打开时空的,再次运行也加载不出数据。里面有两个保存baocun是保存数据的,baocun2是保存人数的,以便打开之后从上次的人数开始。


2026-02-06 08:01:41
广告
不感兴趣
开通SVIP免广告
  • GTA小鸡
  • 吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
jiazai函数文件打开方式错了
读取是r,不是a


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示