简单编程只是替换char数组中的一个字母,试图学习指针。不知道问题是什么,我只是得到输出" senrence" 也许我声明了一个字符串文字或者我的指针逻辑错了?
void replace(char *s,char *ptr_r,char *ptr_t);
int main()
{
char s[] = "senrence";
char ch ='r';
char replacer = 't';
char *ptr_r = &ch;
char *ptr_t = &replacer;
replace(s,ptr_r,ptr_t);
int i;
for(i=0;i<8;i++)
{
printf("%c",s[i]);
}
return 0;
}
void replace(char *s,char *ptr_r,char *ptr_t)
{
char *p;
for(p=s;*p != '\0';p++)
{
if(*p==*ptr_r)
*(ptr_t) = *(p);
}
s= '\0';
}
答案 0 :(得分:0)
你的作业有误:
void replace(char *s,char *ptr_r,char *ptr_t)
{
char *p;
for(p=s;*p != '\0';p++)
{
if(*p==*ptr_r)
*(p)=*(ptr_t); //modified line
}
}
修改:
我删除了不必要的s='\0';
您可以使用puts(s)
打印char[]
而不是迭代它
通过循环。只是一个建议,将节省您编写代码
for loop。
从给定的代码中,我得到了你正在努力学习的概念
的指针即可。因此,我没有建议您使用char variables
或call by value
执行相同的任务,而不是使用pointers (call by reference)
。