c语言习题疑惑 谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:48:32
#include <stdio.h>
#include <string.h>
void fun (char *str,char ch)
{
while (*str &&*str !=ch) str++;
if(*str!=ch)
{ str[0]=ch;
*(str+1)=0;
}
}
void main()
{char s[81],c;
system("CLS");
printf("\nPlease enter a string : ");
gets(s);
printf("\n Please enter the character to search : ");
c=getchar();
fun(s,c);
printf("\nThe result is %s\n",s);
}

fun函数是如何实现在字符串后面添加的?就这地方没明白,麻烦解答一下谢谢

void fun (char *str,char ch)
{
while (*str &&*str !=ch) str++; // 字符串结束 或者 遇到 ch 字符 结束。 此时的str已经为最后一个字符了(重点)。
if(*str!=ch) // 最后一个字符不是 ch 说明 是 ‘\0’
{ str[0]=ch; // 添加ch
*(str+1)=0; // 添加结束符号
}
}

fun函数的功能为:
在字符串str中查找字符ch,若找到,则不改变字符串;
否则,就会在str后面添加字符ch和字符串结束标记。
void fun (char *str,char ch)
{
while (*str &&*str !=ch) str++;//若字符串中没有字符ch,则str最终将指向字符串结束标记
if(*str!=ch)
{ str[0]=ch; //这句也可以写成*str=ch; 就把原来的字符串结束标记改成字符ch
*(str+1)=0; //加上字符串结束标记,也可以写成*(str+1)='\0';
}
}