| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3972 人关注过本帖
标题:读取位置时发生访问冲突
只看楼主 加入收藏
yhyoin
Rank: 2
等 级:论坛游民
帖 子:7
专家分:30
注 册:2013-10-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
读取位置时发生访问冲突
编写一个函数,判断输入的一串字符是否为“回文”。

#include "stdafx.h"
#include<string>
#include<iostream>
using namespace std;

bool judge(char *p)
{
    int start=0;
    int end=0;
    int i=0;
    start=i;
    while(p[i]!='/0')
        i++;
    end=i-1;
    while(start<end)
    {
        if(p[start]!=p[end])
            return false;
        start++;
        end--;   
    }
    return true;
}


int _tmain(int argc, _TCHAR* argv[])
{
    char *p=new char[20];
    cin.getline(p,20);


    if(judge(p)==true)
        cout<<"yes";
    else
        cout<<"no";
    delete p;



    system("pause");
    return 0;
}
结果运行出错
0x00AA48CF 处的第一机会异常(在 ConsoleApplication2.exe 中): 0xC0000005: 读取位置 0x0029B000 时发生访问冲突。

调试后,在 char *p=new char[20];
就显示+        p    0xcccccccc <读取字符串的字符时出错。>    char *

希望大神帮忙解决


搜索更多相关主题的帖子: include return false start 
2013-10-24 09:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
'/0' 改为 '\0'

另外,你的代码实在太差了,有太多错误和恶习,等会儿帮你写一个
2013-10-24 09:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <string>
#include <iostream>
using namespace std;

bool judge( const std::string& s )
{
    for( size_t i=0; i<s.size()/2; ++i )
    {
        if( s[i] != s[s.size()-1-i] )
            return false;
    }
    return true;
}


int main()
{
    string s;
    getline( cin, s );

    cout << ( judge(s) ? "yes" : "no" ) << endl;

    return 0;
}
2013-10-24 09:38
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
收藏
得分:0 
程序代码:
#include <iostream>
using namespace std;
#include <string.h>

bool judge(char *p,int len)
{
    int start=0;
//    int end=0;
//     int i=0;
//     start=i;
//     while(p[i]!='/0')
//         i++;
//    end=i-1;
    while(start<len)
    {
        if(p[start]!=p[len-1])
            return false;
        start++;
        len--;    
    }
    return true;
}

int main(int argc, char** argv)
{
    char *p=new char[20];
    cin.getline(p,20);
    if(judge(p,strlen(p))==true)
        cout<<"yes";
    else
        cout<<"no";
    delete p;
    return 0;
}
2013-10-24 13:01
yhyoin
Rank: 2
等 级:论坛游民
帖 子:7
专家分:30
注 册:2013-10-22
收藏
得分:0 
受教了,谢谢版主,我会注意的。

[ 本帖最后由 yhyoin 于 2013-10-24 13:33 编辑 ]
2013-10-24 13:21
ladododo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-3-13
收藏
得分:0 
回复 2楼 rjsp
能帮我改一个么
2014-03-13 20:31
快速回复:读取位置时发生访问冲突
数据加载中...
 
   



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

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