问题描述
- C语言小问题,求大神。
-
题目:有三串字符,A,B,C。如果A中字符跟B中相同,则把C中字符赋给A。#include"stdio.h"
#define N 100
void replace(char *a,char *b,char *c)
{
char *p;
p=a;
while(*a!='') //尤其注意判断等于是 == 号
{
if(*a==*b){*a=*c;printf("%c",*a);}
a++;
b++;
c++;
}
a=p;
printf("n");
puts(a);
printf("n");
}
int main()
{
char k[N];
char *a,*b,*c; //不能直接定义一个字符指针然后直接输入一串字符
a=b=c=k;printf("输入第一串字符:");
gets(a);
printf("输入第二串字符:");
gets(b);
printf("输入第三串字符:");
gets(c);
replace(a,b,c);
return 0;
}
解决方案
a = new char[100];
b = new char[100];
c = new char[100];
解决方案二:
a,b,c都指向同一个数组k
你需要定义三个数组j,k,l分别给a,b,c
解决方案三:
逻辑好像有问题, 首先 应该比较两个字符的长度 如果长度不一样 就直接return ; 其次 在做比较的时候 发现其中有一个 字符不一样 也要return 最好把 函数改成有返回值的 return -1 说明失败。 成功则返回 长度。
解决方案四:
还有 你main 函数中 a,b,c 是地址; 都指向K? 不是3个指针 同一个指向么?-。-
解决方案五:
就像大家说的这样,你主函数调用有问题。a,b,c都用的一个字符串数组,这样当然看不到任何效果咯!!
解决方案六:
a,b,c需要单独申请空间。
解决方案七:
感觉贴主对内存空间的分配理解的有点凌乱,如楼上所言~