求解C语言的一个程序问题!
编写一个程序,其中包含一个子函数,功能为将a,b两个字符串中共有的字符存储至数组c中并输出。要求:子函数形式为:voidseek(char*a,*b,*c);#inclu...
编写一个程序,其中包含一个子函数,功能为将a,b两个字符串中共有的字符存储至数组c中并输出。要求:
子函数形式为:void seek(char *a,*b,*c);
# include <stdio.h>
# include <string.h>
void seek(char *a,char *b,char *c)
{
int m,i,j=0,n;
m=strlen(a);
for(i=0;i<m;i++)
if(*(a+i)==*(b+i))
{
*(c+j)=*(a+i);
j++;
for(n=i;n<m;n++)
if(*(a+n)==*(a+i))
*(a+n)='\0';
}
}
void main()
{
char a[80],b[80],c[80];
char *x=a,*y=b,*z=c;
printf(" 输入字符串a:");
scanf("%s",&x);
printf(" 输入字符串b:");
scanf("%s",&y);
seek(x,y,z);
printf("包含共有字符的字符串c:%s\n",c);
}
总是不能运行,内存不能为read什么的。求改正求解答!~ 展开
子函数形式为:void seek(char *a,*b,*c);
# include <stdio.h>
# include <string.h>
void seek(char *a,char *b,char *c)
{
int m,i,j=0,n;
m=strlen(a);
for(i=0;i<m;i++)
if(*(a+i)==*(b+i))
{
*(c+j)=*(a+i);
j++;
for(n=i;n<m;n++)
if(*(a+n)==*(a+i))
*(a+n)='\0';
}
}
void main()
{
char a[80],b[80],c[80];
char *x=a,*y=b,*z=c;
printf(" 输入字符串a:");
scanf("%s",&x);
printf(" 输入字符串b:");
scanf("%s",&y);
seek(x,y,z);
printf("包含共有字符的字符串c:%s\n",c);
}
总是不能运行,内存不能为read什么的。求改正求解答!~ 展开
6个回答
展开全部
a,b的长度不一样啊,如果b的长度《a的长度,坑定报错。
应该加上判断是否“\0”
应该加上判断是否“\0”
更多追问追答
追问
可是我输入的时候是a的长度<b的长度啊。。还是不能运行。。。输完a,b两个字符串就不能运行了。。能帮我改改么~谢谢!
追答
void main()
{
char a[80],b[80],c[80];
char *x=a,*y=b,*z=c;
printf(" 输入字符串a:");
scanf("%s",x);
printf(" 输入字符串b:");
scanf("%s",y);
seek(x,y,z);
printf("包含共有字符的字符串c:%s\n",c);
展开全部
花流程图
使用Windows调试工具,价值
预计不会看到了错误类型的断点,最基本的语法错误记忆出界野指针,
4个模块,然后设计各个模块尽可能不依赖的模块程序上的不足仍然可以运行
具体实现的编程技巧,而不是一个说,两个
使用Windows调试工具,价值
预计不会看到了错误类型的断点,最基本的语法错误记忆出界野指针,
4个模块,然后设计各个模块尽可能不依赖的模块程序上的不足仍然可以运行
具体实现的编程技巧,而不是一个说,两个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <string.h>
void seek(char *a,char *b,char *c)
{
int i=0,j=0,z=0,n;
n=strlen(b);
while(a[i])
{for(j=0;j<n;j++)
if(a[i]==b[j])
c[z++]=a[i];
i++;
}
c[z]='\0';
}
void main()
{
char a[80],b[80],c[80];
printf(" 输入字符串a:");
scanf("%s",a);
printf(" 输入字符串b:");
scanf("%s",b);
seek(a,b,c);
printf("包含共有字符的字符串c:%s\n",c);
}
#include <string.h>
void seek(char *a,char *b,char *c)
{
int i=0,j=0,z=0,n;
n=strlen(b);
while(a[i])
{for(j=0;j<n;j++)
if(a[i]==b[j])
c[z++]=a[i];
i++;
}
c[z]='\0';
}
void main()
{
char a[80],b[80],c[80];
printf(" 输入字符串a:");
scanf("%s",a);
printf(" 输入字符串b:");
scanf("%s",b);
seek(a,b,c);
printf("包含共有字符的字符串c:%s\n",c);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
# include <stdio.h>
# include <string.h>
void seek(char *a,char *b)
{
int m,i,j=0,n;
m=strlen(a);
printf("包含共有字符的字符串c:\n");
for(i=0;i<m;i++)
if(*(a+i)==*(b+i))
{
printf("%c",*(a+i));
for(n=i;n<m;n++)
if(*(a+n)==*(a+i))
*(a+n)='\0';
}
}
void main()
{
char a[80],b[80];
//char *x=a,*y=b,*z=c;
printf(" 输入字符串a:");
scanf("%s",a);
printf(" 输入字符串b:");
scanf("%s",b);
seek(a,b);
}
# include <string.h>
void seek(char *a,char *b)
{
int m,i,j=0,n;
m=strlen(a);
printf("包含共有字符的字符串c:\n");
for(i=0;i<m;i++)
if(*(a+i)==*(b+i))
{
printf("%c",*(a+i));
for(n=i;n<m;n++)
if(*(a+n)==*(a+i))
*(a+n)='\0';
}
}
void main()
{
char a[80],b[80];
//char *x=a,*y=b,*z=c;
printf(" 输入字符串a:");
scanf("%s",a);
printf(" 输入字符串b:");
scanf("%s",b);
seek(a,b);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
内存非法访问,如果a字符串长度大于b,那么以a的长度去访问b就不能访问了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先有个很明显的错.....xyz已经是指针了,scanf时应该不要&的,然后还有别的错,在慢慢找找
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询