标题:异常中断!麻烦各位了
只看楼主
sdg430
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-5-17
结帖率:66.67%
 问题点数:0 回复次数:3 
异常中断!麻烦各位了
#include <stdio.h>
#include <string.h>
#define max 10
int main()
{
    char *pstr="abcdef";
    int steps=3;
    int n=strlen(pstr)-steps;
    char tmp[max];
    strcpy(tmp,pstr+n);
    strcpy(tmp+steps,pstr);
    *(tmp+strlen(pstr))='\0';
    strcpy(pstr,tmp);
    printf("%s",*pstr);
    getchar();
    return 0;
}
在VS2008中执行后弹出

“wei.exe 中的 0x1026f689 (msvcr90d.dll) 处未处理的异常: 0xC0000005: 写入位置 0x00415740 时发生访问冲突”
这个要怎么解决,应该是内存冲突,但怎么改呢?我是菜鸟,麻烦各位了!
 
搜索更多相关主题的帖子: 麻烦 
2010-06-28 20:31
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>
#define max 10
int main()
{
    char *pstr="abcdef";   //pstr指向的是常量存储区,不能修改常量即所指向的内容“abcdef” ,所以  strcpy(pstr,tmp);会存在问题。解决方法char pstr[] = "abcdef"
    int steps=3;
    int n=strlen(pstr)-steps;
    char tmp[max];
    strcpy(tmp,pstr+n);
    strcpy(tmp+steps,pstr);
    *(tmp+strlen(pstr))='\0';
    strcpy(pstr,tmp);
    printf("%s", *pstr);   //改为 printf("%s", pstr),第二个参数地址值,所以不需要加*
       getchar();
    return 0;
}
2010-06-28 20:53
sdg430
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-5-17
得分:0 
回复 2楼 最近不在
谢谢版主了,在这里学到很多东西!
2010-06-29 14:47
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
得分:0 
建议你去看看我发的那个内存管理的帖子。

南国利剑
2010-06-30 19:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-311555-1-1.html




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

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