请问大家, { str [ 0 ] = ch; str[1] = '\0'; } 在这道题中有什么作用
解决时间 2021-04-13 11:39
- 提问者网友:我没有何以琛的痴心不悔
- 2021-04-12 16:21
下列给定程序中,函数fun的功能是:判断字符ch是否与str所指串中的某个字符相同;若相同,则什么也不做;若不同,则将其插在串的最后。
#include
#include
void fun(char *str, char ch )
{ while ( *str && *str != ch ) str++;
if ( *str != ch )
{ str [ 0 ] = ch;
str[1] = '\0';
}
}
main( )
{ char s[81], c ;
printf( "\nPlease enter a string:\n" ); gets ( s );
printf ("\n Please enter the character to search : " );
c = getchar();
fun(s, c) ;
printf( "\nThe result is %s\n", s);
}
最佳答案
- 五星知识达人网友:过活
- 2021-04-12 17:02
str [ 0 ] = ch; \\给str指针当前指的内存赋值为ch
str[1] = '\0' \\\因为str已经是最后一个字符了,所以把最后一个字符加一个字符串结束符'\0'
实际上这两句就是题目的要求,如果没找到,则把该字符插在最后
全部回答
- 1楼网友:十年萤火照君眠
- 2021-04-12 18:41
void delete _string(char str[],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}
实际上是通过两个下标来完成的,你可以看到 i 和 j 都是从0开始的,
if(str[i]!=ch)
str[j++]=str[i];
如果str[i]!=ch的话执行str[j++]=str[i];
这等价于str[j]=str[i],在之前如果没有出现ch这个字符 i 和 j 就会同时++,这样 i 和 j 的值是相等的,当然str[j]和str[i]也是想等的,如果str[i]==ch就会跳过str[j++]=str[i];
j 就不会++,这样一来 j 就会比 i 小1,str[j++]=str[i];这样就是把str[i](等于ch的那个)之后的每个字符一次向前移动一个,所以就完成了删除字串中一个字符的功能。
我要举报
大家都在看
推荐资讯