| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2503 人关注过本帖, 1 人收藏
标题:数组与指针的问题,跳出“停止工作”的对话框,请问哪里错误?
只看楼主 加入收藏
hyeagle
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-11-15
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:10 
数组与指针的问题,跳出“停止工作”的对话框,请问哪里错误?
程序代码:
#include<stdio.h>
#include<math.h>
void rep(char *s,char *s1,char *s2)
{
    char *p;

    for(;*s;s++)/*顺序访问字符串s中的每个字符*/
    {
        for(p=s1;*p&&*p!=*s;p++);/*检查当前字符是否在字符串s1中出现*/
        if(*p)*s=*(p-s1+s2);/*当前字符在字符串s1中出现,用字符串s2中的对应字符代替s中的字符*/
    }
} 

main()
{
    char s[]="abdfaxcak", t1[]="ac", t2[]="XY";
    rep(s,t1,t2);
    printf("%s",s);
}

程序代码:
#include<stdio.h>
#include<math.h>
void rep(char *s,char *s1,char *s2)
{
    char *p;

    for(;*s;s++)/*顺序访问字符串s中的每个字符*/
    {
        for(p=s1;*p&&*p!=*s;p++);/*检查当前字符是否在字符串s1中出现*/
        if(*p)*s=*(p-s1+s2);/*当前字符在字符串s1中出现,用字符串s2中的对应字符代替s中的字符*/
    }
} 

main()
{
    char *s="abdfaxcak", *t1="ac", *t2="XY";
    rep(s,t1,t2);
    printf("%s",s);
}

程序代码:
#include<stdio.h>
#include<math.h>
void rep(char *s,char *s1,char *s2)
{
    char *p;

    for(;*s;s++)/*顺序访问字符串s中的每个字符*/
    {
        for(p=s1;*p&&*p!=*s;p++);/*检查当前字符是否在字符串s1中出现*/
        if(*p)*s=*(p-s1+s2);/*当前字符在字符串s1中出现,用字符串s2中的对应字符代替s中的字符*/
    }
} 

main()
{
    char s[]="abdfaxcak", t1[]="ac", t2[]="XY";
    char *x, *x1, *x2;
    x=s,x1=t1,x2=t2;
    rep(x,x1,x2);
    printf("%s",s);
}


第一三个代码没有问题,第二个的出现问题,跳出停止工作的对话框,请问为什么会出错?

[此贴子已经被作者于2016-11-16 14:11编辑过]

搜索更多相关主题的帖子: 对话框 
2016-11-15 22:19
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:10 
char *s="abdfaxcak", *t1="ac", *t2="XY";  可读不可写

早知做人那么辛苦!  当初不应该下凡
2016-11-15 22:51
hyeagle
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-11-15
收藏
得分:0 
回复 2楼 炎天
我试了一下,是在运行函数的时候出的问题。你的意思是不是:因为可读不可写,而运行函数的时候需要将里面的内容改写,所以无法运行?
2016-11-16 08:19
自制力
Rank: 2
等 级:论坛游民
帖 子:19
专家分:32
注 册:2016-11-15
收藏
得分:0 
#include<stdio.h>
#include<math.h>
void rep(char *s,char *s1,char *s2)
{
    char *p;

    for(;*s;s++)/*顺序访问字符串s中的每个字符*/   //这里是不是无限循环了??这个样子,操作系统一直给你空间。。内存不足,当然停止了。。
    {
        for(p=s1;*p&&*p!=*s;p++);/*检查当前字符是否在字符串s1中出现*/
        if(*p)*s=*(p-s1+s2);/*当前字符在字符串s1中出现,用字符串s2中的对应字符代替s中的字符*/
    }
}

main()
{
    char *s="abdfaxcak", *t1="ac", *t2="XY";
    rep(s,t1,t2);
    printf("%s",s);
}
2016-11-16 12:29
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 楼主 hyeagle
挨个注视掉自己代码中的可疑部分。看什么时候报错会消失。很多问题可以这样查出
收到的鲜花
  • 九转星河2016-11-16 13:43 送鲜花  1朵   附言:我很赞同~我通常也是这样做的
2016-11-16 12:42
自制力
Rank: 2
等 级:论坛游民
帖 子:19
专家分:32
注 册:2016-11-15
收藏
得分:0 
回复 5楼 yangfrancis
那您觉得这个是什么错误呢??我很好奇!
2016-11-16 12:48
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
第一个贴
  char s[]="abdfaxcak", t1[]="ac", t2[]="XY";
    char *s="abdfaxcak", *t1="ac", *t2="XY";
变量s是重复定义么~为啥我的编译器版本(vc)过不了~还是我操作有问题~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-16 13:02
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
第二个贴,化简得~
#include<stdio.h>
int main()
{
    char *s="abdfaxcak";
    *s='a';
    return 0;
}
不能正常运行~


[此贴子已经被作者于2016-11-16 13:55编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-16 13:36
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 8楼 九转星河
~我说的不一定正确

[此贴子已经被作者于2016-11-16 13:44编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-16 13:41
hyeagle
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-11-15
收藏
得分:0 
回复 4楼 自制力
但我第一个和第三个却没有问题
2016-11-16 14:13
快速回复:数组与指针的问题,跳出“停止工作”的对话框,请问哪里错误?
数据加载中...
 
   



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

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