永发信息网

请问大家, { str [ 0 ] = ch; str[1] = '\0'; } 在这道题中有什么作用

答案:2  悬赏:30  手机版
解决时间 2021-04-13 11:39
下列给定程序中,函数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);
}
最佳答案
str [ 0 ] = ch; \\给str指针当前指的内存赋值为ch

str[1] = '\0' \\\因为str已经是最后一个字符了,所以把最后一个字符加一个字符串结束符'\0'
实际上这两句就是题目的要求,如果没找到,则把该字符插在最后
全部回答
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的那个)之后的每个字符一次向前移动一个,所以就完成了删除字串中一个字符的功能。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
翻车时是什么样感觉?
一道初三的物理题!
美德佳园6幢北门地址在哪,我要去那里办事
索爱MP5型号V-78
幸福小区-南门怎么去啊,有知道地址的么
女主被男主用绳子绑在轮船上在海里开
关于多普达手机(钻石)的区别
帮我空间取个好听的名字!
你的粉末 这谁的歌?
有没有血腥暴力点的校园黑道小说?
申诉凭证是什么东西,qq成功申诉凭证是什么意
株洲市电业局东院地址在什么地方,想过去办事
谁能提供下面几个GBA 游戏的ROM包
你好!我的月经周期一般都不准确,那要怎样才
Marilyn Monroe was certainly one of the mo
推荐资讯
蒙牛的产业链升级
北方为什么红叶那么少呢?
两脚发麻有肿胀感且有轻微浮肿,是什么问题?
dnf战法现在还可以卡煌龙(无限煌龙)不?能卡该
QQ宠物要现在多少级才能玩冒险岛
有什么好看的欧美大片?
新前茂丰街怎么走
个人拉征信在哪里
一道关于相似三角形的几何题目 有图
桃源县常德桃源县寺坪乡中学在什么地方啊,我
Nuendo与Sonar有什么区别?拜托了各位 谢谢
中国黄金大英珠宝城在哪里啊,我有事要去这个
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?