c语言编程编写函数,在一个字符串中查找字符x,将其全部替换为y(x、y都是任意字符变量),求助
下面是我编的,可是最后总是输不出结果,求指导#include<stdio.h>#defineN6intchange(chara[],charb,charc){inti=0...
下面是我编的,可是最后总是输不出结果,求指导
#include<stdio.h>
#define N 6
int change(char a[],char b,char c)
{ int i=0,count=0;
while(a[i]!='\0')
{ if(a[i]==b)
a[i]=c;
count++;
i++;
}
if(count==0)
return 0;
else return 1;
}
main()
{
char a[N],b,c;
int i;
printf("请输入6个字符:\n");
for(i=0;i<N;i++)
scanf("%c",&a[i]);
printf("请分别输入被替换字符和替换字符:\n");
scanf("%c%c",&b,&c);
if(change(a,b,c)==1)
{
for(i=0;i<N;i++)
printf("%c",a[i]);
}
} 展开
#include<stdio.h>
#define N 6
int change(char a[],char b,char c)
{ int i=0,count=0;
while(a[i]!='\0')
{ if(a[i]==b)
a[i]=c;
count++;
i++;
}
if(count==0)
return 0;
else return 1;
}
main()
{
char a[N],b,c;
int i;
printf("请输入6个字符:\n");
for(i=0;i<N;i++)
scanf("%c",&a[i]);
printf("请分别输入被替换字符和替换字符:\n");
scanf("%c%c",&b,&c);
if(change(a,b,c)==1)
{
for(i=0;i<N;i++)
printf("%c",a[i]);
}
} 展开
3个回答
展开全部
#include <stdio.h>
#define N 7
int change(char a[],char b,char c) {
int i = 0,count = 0;
while(a[i] != '\0') {
if(a[i] == b) a[i] = c;
count++;
i++;
}
return count;
}
int main() {
char a[N],b,c;
int i;
printf("请输入6个字符:\n");
for(i = 0;i < N;i++)
scanf("%c",&a[i]);
printf("请分别输入被替换字符和替换字符:\n");
a[i] = '\0'; // 补充串结束符
scanf("%c%c",&b,&c);
change(a,b,c);
for(i = 0;i < N;i++)
printf("%c",a[i]);
printf("\n");
return 0;
}
展开全部
输不出来的原因是你的 scanf("%c%c",&b,&c);中的b接受了上一个scanf输入中的回车换行符1310中的换行符10,所以你的b变成了ASCII的10,是个不可见字符,而C接收了你输入的第二个字符,所以没法替换。你可以在scanf("%c%c",&b,&c);的前面加个scanf("%c",&b);试试,应该就可以正常替换了。这是scanf的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题出在第二个scanf。第一个scanf输入时,输入6个字符后回车,6个字符被a接收了,而回车未被接收(在缓存中),被第二个scanf捕获,从而被被b接收了,下断点调试你就能看到b=10.
并不是xoaxa 说的 a[i] = '\0'; // 补充串结束符 ,他只是凑巧将N变为7了,然后a[6]接收了回车
更改的方法是在第二个scanf上一行加一句 getchar(); 让getchar接收掉回车
并不是xoaxa 说的 a[i] = '\0'; // 补充串结束符 ,他只是凑巧将N变为7了,然后a[6]接收了回车
更改的方法是在第二个scanf上一行加一句 getchar(); 让getchar接收掉回车
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询