simple_ABC 2016-12-29 13:25 采纳率: 0%
浏览 959

C语言编译的电话通讯录,编译通过,使用时一删除就出现BUG想知道问题在哪

Book.h

#include
#define MAX 1000
typedef struct information
{
char name[10];
char sex[3];
char tel[12];
char address[30];
int age;
}info;
int main()
{
void add_linkman(info *arr);
void printf_face();
void del_linkman(info *arr);
info *empt_linkman(info *arr);
void display(info *arr);
void display_all(info *arr);
void alter_linkman(info *arr);
info *find_linkman(info *arr);
void sort(info *arr);
info arr[MAX] = { { 0, 0, 0, 0, 0 } };
info *tmp = arr;
info *star = arr;
printf("欢迎使用通讯录!\n");
while (1)
{
tmp = arr;
printf_face();
int input = 0;
scanf("%d", &input);
fflush(stdin);
switch (input)
{
case 1:
{
add_linkman(tmp);
}; break;
case 2:
{
del_linkman(tmp);
}; break;
case 3:
{
display(find_linkman(tmp));
}break;
case 4:
{
alter_linkman(tmp);
}break;
case 5:
{
display_all(tmp);
}break;
case 6:
{
empt_linkman(tmp);
}break;
case 7:
{
sort(tmp);
display_all(arr);
}break;
default:
break;
}
}
return 0;
}

Book.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"Book.h"
#include
void printf_face()
{
printf(" 1.添加联系人信息 \n");
printf(" *2.删除指定联系人信息 \n");
printf(" *3.查找指定联系人信息 \n");
printf(" *4.修改指定联系人信息 \n");
printf(" *5.显示所有联系人信息 \n");
printf(" *6.清空所有联系人 \n");
printf(" *7.以名字排序所有联系人 \n");
}
void add_linkman(info *arr)
{
int i = 0;
for (i = 0; i < MAX; i++)
{
if (
(arr + i)->name == 0)
{
printf("请输入姓名:\n");
gets((arr+i)->name);
printf("请输入性别:\n");
gets((arr+i)->sex);
printf("请输入年龄:\n");
scanf("%d", &arr->age);
fflush(stdin);
printf("请输入电话:\n");
gets((arr+i)->tel);
printf("请输入地址:\n");
gets((arr+i)->address);
printf("添加成功!!\n");
break;
}
}
}
void del_linkman(info arr)
{
printf("请输入删除人姓名:\n");
int key = 0;
char ch[10];
fflush(stdin);
gets(ch);
int i;

for (i = 0; i < MAX; i++)
{
if (strcmp(ch, (arr + i)->name) == 0)
{
strcpy((arr + i)->name, 0);
strcpy((arr + i)->sex, 0);
strcpy((arr + i)->tel, 0);
strcpy((arr + i)->address, 0);
(arr + i)->age = 0;
key = 1;
printf("删除成功!!!");
}
}
if (key = 0)
{
printf("没有此人的信息!!!\n");
}
}
info *find_linkman(info *arr)
{
printf("请输入查找人姓名:\n");
char ch[10];
fflush(stdin);
gets(ch);
while (
(arr->name))
{
if (strcmp(ch, arr->name) == 0)
{
return arr;
}
else
arr++;
}
return NULL;
}
void alter_linkman(info arr)
{
printf("请输入修改人姓名:\n");
int key = 0;
char ch[10];
fflush(stdin);
gets(ch);
while (
(arr->name))
{
if (strcmp(ch, arr->name) == 0)
{
printf("请输入姓名:\n");
gets(arr ->name);
printf("请输入性别:\n");
gets(arr ->sex);
printf("请输入年龄:\n");
scanf("%d", &arr->age);
fflush(stdin);
printf("请输入电话:\n");
gets(arr ->tel);
printf("请输入地址:\n");
gets(arr ->address);
printf("修改成功!!!\n");
key = 1;
break;
}
else
arr++;
}
if (key = 0)
{
printf("查无此人!!\n");
}
}
void display(info arr)
{
printf("
****************\n");
printf("姓名:%s\n", arr->name);
printf("性别:%s\n", arr->sex);
printf("年龄:%d\n", arr->age);
printf("电话:%s\n", arr->tel);
printf("地址:%s\n", arr->address);
printf("*****************\n");
}
void display_all(info arr)
{
int i = 0;
for (i = 0; i < MAX; i++)
{
if (
(arr+i)->name)
{
display(arr+i);
}
}
}
info *empt_linkman(info *arr)
{
int i = 0;
for (i = 0; i < MAX; i++)
{
strcpy((arr+i)->name, 0);
strcpy((arr+i)->sex, 0);
strcpy((arr+i)->tel, 0);
strcpy((arr+i)->address, 0);
(arr+i)->age = 0;
}
printf("清空成功!!!\n");
return arr;
}
void sort(info *arr)
{
int i, j;
for (i = 0; i < MAX - 1; i++)
for (j = 0; j < MAX - i - 1; j++)
{
if (strcmp((arr + j)->name, (arr + j + 1)->name)>0)
{
info tmp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = tmp;
}
}
printf("排序成功!!!\n");
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-12-29 15:45
    关注

    strcpy((arr + i)->name, 0);
    strcpy((arr + i)->sex, 0);
    strcpy((arr + i)->tel, 0);
    strcpy((arr + i)->address, 0);

    这都是什么东西,0作为地址都是野指针,当然报错

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?