找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1818|回复: 3

运行时输入后就出现该内存不能读

[复制链接]
发表于 2009-11-5 00:21:06 | 显示全部楼层 |阅读模式 IP:江苏扬州
#include<iostream>
using namespace std;
#include<stdio.h>
#include<stdlib.h>

class group_1
{
public:
void find(void);
};
group_1 everyone;
class group_2
{
public:
void add(void);
void modify(void);
};
group_2 select_few;
class group_3
{
public:
void add(void);
void modify(void);
void remove(void);
};
group_3 heath;
int main()
{
char string[2],option='\0';
int i,*intptr;
char *password,*charptr;
cout<<"please enter password: ";
charptr=gets(password);
i=atoi(charptr);

while(option!='q')
{
cout<<"please enter option: \n";
cout<<"<a>dd,<f>ind,<m>odify,<d>elete or <q>uit : ";
cin>>option;
switch(option)
{
case 'a':
if(i==10||i==20)
{
select_few.add();
}
else if(i==99)
{
heath.add();
}
else
cout<<"permission denied!\n";
break;
case 'f':
everyone.find();
break;
case 'm':
if(i==10||i==20)
{
select_few.modify();
}
else if(i==99)
{
heath.modify();
}
else
cout<<"permission denied!\n";
break;
case 'd':
if(i==99)
heath.remove();
else
cout<<"permission denied!\n";
break;
case 'q':
break;
default:
cout<<"invalid input!please re_enter!\n";
}
}
}

void group_1::find(void)
{
cout<<"inside group_1 find()\n";
}
void group_2::add(void)
{
cout<<"inside group2 add()\n";
}
void group_2::modify()
{
cout<<"inside group2 modify()\n";
}
void group_3::add(void)
{
cout<<"inside group3 add()\n";
}
void group_3::modify()
{
cout<<"inside group3 modify()\n";
}
void group_3::remove()
{
cout<<"inside group_3 remove()\n";
}




在上面的一段程序中有这么一段:
char string[2],option='\0';
int i,*intptr;
char *password,*charptr;
cout<<"please enter password: ";
charptr=gets(password);
i=atoi(charptr);
运行后,先输入password,但是输入后一按回车就出现内存不能读的错误,
但是我稍微改一下把charptr=gets(password);i=atoi(charptr)改为cin>>i后就没事了,是怎么回事啊,
请大家帮我解释一下
发表于 2009-11-5 00:21:07 | 显示全部楼层 IP:江苏扬州
charptr=gets(password);
这是什么用法??
回复

使用道具 举报

发表于 2009-11-5 00:21:09 | 显示全部楼层 IP:江苏扬州
char *gets( char *buffer );
函数返回参数的值.
char *password,*charptr;
cout<<"please enter password: ";
charptr=gets(password);
i=atoi(charptr);
//这里password没有分配内存空间。
//这里也没有为charptr分配内存空间,怎么aoti()???

改一下:
char *charptr;
charptr=new char[20];
char *password="123";
cout<<"please enter password: ";
charptr=gets(password);
i=atoi(charptr);
回复

使用道具 举报

发表于 2009-11-5 00:21:11 | 显示全部楼层 IP:江苏扬州
哦,明白了,原来是那两个指针没有分配内存空间,难怪会出错,看来以后这方面还要注意一下了
谢谢3楼的帮忙
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 07:36 , Processed in 0.207153 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表