这个输入的函数,总是输入到年龄结束之后就自动退出整个程序了,应该如何修改?
3条回答 默认 最新
- 阿里嘎多学长 2024-05-28 20:36关注
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
根据提供的代码段,我们可以看到几个问题需要解决:
-
scanf函数调用中的语法错误:在代码的95、97、99、101和103行中,scanf函数调用存在语法错误。应该是
scanf
而不是scanf(
,并且qw->size
应为qw->size
而不是qw-esize
。 -
确保
qw->size
正确地表示当前联系人列表的大小:qw->size
应该是一个整数,表示联系人数组中已存储的联系人数量。 -
检查
qw->sz
数组是否已正确分配并初始化:需要确保qw->sz
是一个足够大的数组,并且已经正确初始化,以便存储联系人信息。 -
验证
xinjian
函数和xianshi
函数的逻辑:需要检查这两个函数的逻辑是否正确,以及是否需要进一步修改。
下面是修改后的代码示例:
#include <stdio.h> #include <stdlib.h> typedef struct { char name[50]; char address[100]; char sex[10]; float year; int leibie; } Person; typedef struct { Person sz[100]; // 假设最多存储100个联系人 int size; } ContactList; void xinjian(ContactList *qw) { if (qw->size >= 100) { printf("联系人列表已满。\n"); return; } printf("名字:"); scanf("%49s", qw->sz[qw->size].name); // 限制输入长度,防止溢出 printf("单位:"); scanf("%99s", qw->sz[qw->size].address); // 限制输入长度,防止溢出 printf("性别:"); scanf("%9s", qw->sz[qw->size].sex); // 限制输入长度,防止溢出 printf("年龄:"); scanf("%f", &qw->sz[qw->size].year); printf("分类:"); scanf("%d", &qw->sz[qw->size].leibie); qw->size++; printf("\n"); } void xianshi(ContactList qw) { // 假设这个函数是用来显示联系人列表的,需要根据实际情况实现 for (int i = 0; i < qw.size; i++) { printf("联系人 %d:\n", i + 1); printf("名字:%s\n", qw.sz[i].name); printf("单位:%s\n", qw.sz[i].address); printf("性别:%s\n", qw.sz[i].sex); printf("年龄:%f\n", qw.sz[i].year); printf("分类:%d\n", qw.sz[i].leibie); } } int main() { ContactList myContacts; myContacts.size = 0; // 初始化联系人数量为0 // 假设这里有一个循环,用户可以选择添加联系人等操作 // ... return 0; }
注意:
- 我假设
qw->sz
是一个Person
类型的数组,并且qw->size
是int
类型。 - 我添加了对输入长度的限制,以防止缓冲区溢出。
xianshi
函数需要根据实际情况实现,这里只是一个示例。
参考资料:
- C语言标准输入输出函数:C语言中文网
- 结构体和指针:GeeksforGeeks
请根据你的具体需求调整上述代码。如果你需要进一步的帮助,请提供更多的上下文信息。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录 -
悬赏问题
- ¥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画这种图吗