| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 580 人关注过本帖
标题:运行时输入后就出现该内存不能读
只看楼主 加入收藏
bill8888
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2007-3-10
收藏
 问题点数:0 回复次数:3 
运行时输入后就出现该内存不能读
#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后就没事了,是怎么回事啊,
请大家帮我解释一下
搜索更多相关主题的帖子: 内存 运行 输入 
2007-03-17 13:18
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
charptr=gets(password);
这是什么用法??

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-03-17 15:18
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

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);


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-03-17 16:08
bill8888
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2007-3-10
收藏
得分:0 
哦,明白了,原来是那两个指针没有分配内存空间,难怪会出错,看来以后这方面还要注意一下了
谢谢3楼的帮忙

2007-03-17 19:20
快速回复:运行时输入后就出现该内存不能读
数据加载中...
 
   



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

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