数组与指针的问题,跳出“停止工作”的对话框,请问哪里错误?
程序代码:#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编辑过]









