| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1180 人关注过本帖
标题:编结构体字符串又遇到问题了,唉,只好向各位请教了!(新问题)
只看楼主 加入收藏
crz03128
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-5-22
收藏
得分:0 
回复:(mp3aaa)看看是这样吗?#include

不行,还是老问题 不知道是不是引用了一个没有定义的内存


老师领进门,成长靠自己+虚心
2007-06-14 22:11
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
什么问题? 在我家 一切正常

羊肉串 葡萄干 哈密瓜!!
2007-06-14 22:26
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
你用的什么编译器

羊肉串 葡萄干 哈密瓜!!
2007-06-14 22:26
crz03128
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-5-22
收藏
得分:0 

不知道,我用VC++编写程序


老师领进门,成长靠自己+虚心
2007-06-14 23:01
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 

有时候出现内存地址不能为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");


}

2007-06-14 23:18
crz03128
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-5-22
收藏
得分:0 
回复:(百年不亮)有时候出现内存地址不能为written ...
非常感谢,第二次帮我了,以后还请多指教
//当i>t时a[i]中的值是随机的,极可能越界 
这句话可不可以解释清楚些?

[此贴子已经被作者于2007-6-14 23:54:35编辑过]


老师领进门,成长靠自己+虚心
2007-06-14 23:51
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
for(i=0;i<5;i++)
if(strcmp(hisname,txl[i].name)==0)
{flag=1;a[t]=i;t++;}

这一段在匹配时将匹配的序号存到a[]中,最后你从a[0]存到a[t],t<4时表明数组后面元素没有赋值,比如a[4]可能是很大的垃圾数据.
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
最后循环输出,当i>t时就把a[i]中的垃圾数据当作下标给了他txl[],于是越界,访问到不该访问的内存,系统捕获这个异常就弹出错误提示并终止程序
2007-06-15 01:23
crz03128
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-5-22
收藏
得分:0 

谢谢你的解释,又补充了个新问题


老师领进门,成长靠自己+虚心
2007-06-16 20:18
快速回复:编结构体字符串又遇到问题了,唉,只好向各位请教了!(新问题)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014784 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved