这个想
实现的功能就是把文件中的数据,
然后传递在程序里,
然后对文件数据进行增删查改的功能,
怎样实现呢,
现在一运行就啥也没有。
应该如何修改呢?
这个功能出现问题,应该如何修改呢?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
根据您提供的代码,看起来是一个简单的C语言项目,用于操作联系人列表(通讯录)。它包含读取文件(
duqv()
)和写回文件(sc()
)的功能,以及一系列对联系人的操作,如新建、显示、查找、删除和修改。目前的问题是运行后没有任何反应,可能是因为程序没有正确地执行文件读取或初始化工作。首先,让我们修复一下
main()
函数中的错误。在main()
函数开始时,你需要为stu sz[max]
和txl qw
分配内存,并且打开文件。同时,还需要在main()
结束前关闭文件。这是修改后的main()
函数:int main() { int max = 10; // 根据需求定义最大联系人数 stu sz[max]; txl qw; fp = fopen("结课设计.txt", "r"); if (fp == NULL) { printf("无法打开文件\n"); return -1; } duqv(sz, fp); fclose(fp); fp = fopen("data.txt", "w"); if (fp == NULL) { printf("无法打开文件\n"); return -1; } // ...其他代码保持不变... sc(sz, fp); fclose(fp); return 0; }
接下来,我们需要检查
duqv()
函数,确保它能正确读取文件中的联系人信息。由于提供的代码片段缺少了结构体txl
的定义,我将假设它有相应的成员变量与下面的代码匹配:typedef struct { char name[50]; char sex[10]; int dianhua; float year; char leibie[20]; } txl; void duqv(stu sz[max], FILE *fp) { int i = 0; while (i < max && !feof(fp)) { fscanf(fp, "%s %s %d %f %s", sz[i].name, sz[i].sex, &sz[i].dianhua, &sz[i].year, sz[i].leibie); i++; } qw.size = i; }
现在,我们已经修复了文件读取部分。接下来,你需要确保每个操作函数(如
xinjian()
、xianshi()
等)都正常工作。这里只提供一个示例,您可以根据需要调整其他函数:void xinjian(txl *qw) { char new_name[50], new_sex[10]; int new_dianhua; float new_year; char new_leibie[20]; printf("请输入新联系人的姓名:"); scanf("%s", new_name); printf("请输入新联系人的性别:"); scanf("%s", new_sex); printf("请输入新联系人的电话号码:"); scanf("%d", &new_dianhua); printf("请输入新联系人的年龄:"); scanf("%f", &new_year); printf("请输入新联系人的分类:"); scanf("%s", new_leibie); qw->size++; qw->sz[qw->size-1].name = malloc(strlen(new_name)+1); strcpy(qw->sz[qw->size-1].name, new_name); qw->sz[qw->size-1].sex = malloc(strlen(new_sex)+1); strcpy(qw->sz[qw->size-1].sex, new_sex); qw->sz[qw->size-1].dianhua = new_dianhua; qw->sz[qw->size-1].year = new_year; qw->sz[qw->size-1].leibie = malloc(strlen(new_leibie)+1); strcpy(qw->sz[qw->size-1].leibie, new_leibie); }
其余的函数(
xianshi()
、chazhao()
、shanchu()
、xiugai()
、tianjia()
)也需要类似地实现。确保它们的逻辑正确,并且在完成后更新文件。这样应该可以解决您的问题。不过,需要注意的是,这个程序还有许多潜在的问题,比如内存泄漏(当复制字符串时没有释放旧的内存),以及没有处理输入验证。为了使代码更加健壮,建议在实际开发中考虑这些问题。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
- ¥15 android 集成sentry上报时报错。
- ¥50 win10链接MySQL
- ¥35 跳过我的世界插件ip验证
- ¥15 抖音看过的视频,缓存在哪个文件
- ¥15 自定义损失函数报输入参数的数目不足
- ¥15 如果我想学习C大家有是的的资料吗
- ¥15 根据文件名称对文件进行排序
- ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
- ¥15 有人会用py或者r画这种图吗