不行,还是老问题 不知道是不是引用了一个没有定义的内存
老师领进门,成长靠自己+虚心
有时候出现内存地址不能为written ,就说明你数组下标越界了.
#include<stdio.h>
#include<string.h>
struct AdressBook
{
char name[20];
char tel[20];
}txl[5]={{"Li","39344752"},{"Wang","39344730"},{"Xie","39344784"},{"Zhang","39374776"}};
void main()
{
int i,t=0,flag=0,a[5];
char hisname[20];
printf("please insert an new name and tel:");/*插入功能*/
scanf("%s %s",txl[4].name,txl[4].tel);
for(i=0;i<5;i++)
printf("%s %s\n",txl[i].name,txl[i].tel);
printf("please input the name you want search:");/*查找功能*/
scanf("%s",hisname);
for(i=0;i<5;i++)
if(strcmp(hisname,txl[i].name)==0)
{flag=1;a[t]=i;t++;}
if(flag=1)
for(i=0;i<10;i++) //改为 for(i=0;i<t;i++)
printf("%s\n",txl[a[i]].tel); //当i>t时a[i]中的值是随机的,极可能越界
else
printf("the name you search did't in the AdressBook\n");
}