| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 659 人关注过本帖, 1 人收藏
标题:c语言一题目有点不理解 哪位大大解释下? 新收求教了
只看楼主 加入收藏
久酒
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-9-15
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:6 
c语言一题目有点不理解 哪位大大解释下? 新收求教了
给定程序中,函数fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
#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';
  }
}
main()
{
  char s[81],c ;
  printf("Please enter a string:\n");
  gets(s);
  printf("Please enter the character to search: ");
  c=getchar();
  fun(s,c);
  printf("The result  is %s\n", s);
}
我理解不了 *str&&*str!=ch  这个是干么的 如果判断str所指的那字符是不是等于ch所指的  那前面*str&&  又是什么意思?
能给我详细解释下 fun函数里每一步做的动作吗
搜索更多相关主题的帖子: c语言 解释 
2010-09-15 14:11
codeferever
Rank: 2
等 级:论坛游民
帖 子:12
专家分:31
注 册:2010-7-25
收藏
得分:5 
>>while(*str&&*str!=ch)
if not the end of string && *str is not ch
>>str++;
address+=1
then next judge should be if the end of string or found the char!
so the correct code is:
if(*str)//not the end
{
    str++;
    *str=ch;
    str++;
    *str='\0';
    return;
}
printf("can't find the character!\n");


2010-09-15 15:38
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:5 
#include  <stdio.h>
#include  <string.h>

void fun(char *str,char ch)
{
    while(*str&&*str!=ch)
        str++;

    *str++=ch;
    *str ='\0';
}

int main()
{
  char s[81],c ;
  printf("Please enter a string:\n");
  gets(s);
  printf("Please enter the character to search: ");
  c = getchar();
  fun(s,c);
  printf("The result  is %s\n", s);

  return 0;
}
2010-09-15 15:45
qq524923556
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2010-9-15
收藏
得分:5 
学习le !!谢谢~!!~

欢迎各位交流和学习!~! 谢谢!
2010-09-15 16:41
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:5 
真巧,我帮别人补考C语言的时候做到这题的改错

清风拂暮(木)
2010-09-15 16:58
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
这个str[0]=ch;
    str[1]='\0';
好像不符合题目的要求吧?

清风拂暮(木)
2010-09-15 17:30
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
*str&&*str!=ch  这个是为了找到str中的与ch所指字符不同的位置
*str&&是为了保证字符串不是空而且还没结束
2个综合起来条件成立才能执行里面的语句 但是里面的语句不符合题目的要求吧 题目要求的是放在字符串的最后一个 你这里可以找到字符串的最后一个结束标志然后把ch字符赋值给它 再在后面加个结束标志

清风拂暮(木)
2010-09-15 17:36
快速回复:c语言一题目有点不理解 哪位大大解释下? 新收求教了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029513 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved