标题:这两个程序有什么区别吗?
取消只看楼主
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
结帖率:100%
 问题点数:0 回复次数:0 
这两个程序有什么区别吗?
程序代码:
//修改后
#include <stdio.h>

char *mystrchr(char *, char );

int main(void)
{
    char str[81];
     char ch;
     char *p;

 do

 {
  puts("输入字符串的范围:");
  gets(str);
  puts("输入匹配字符 :");
  ch = getchar();
  getchar();
  p = mystrchr(str, ch);
  if ( p )
  {
   puts("找到!");
   puts(p);
  }
  else puts("找不到!");

  puts("输入任何字符除了q继续.");
  gets(str);

 }

 while(*str != 'q');


 puts("退出.");
    return 0;
}

char *mystrchr(char *p, char ch)
{
//
 if(*p == '\0') return NULL;

 while(1)

 {
  if(*p == ch)
  {
   return p;//

  }
  else
  {
   if(*++p == '\0') return NULL;
   //
  }

 }
}

程序代码:
//原文
#include <stdio.h>

char *mystrchr(char *, char );

int main(void)
{
    char str[81];
     char ch;
     char *p;

 do

 {
  puts("输入字符串的范围:");
  gets(str);
  puts("输入匹配字符 :");
  ch = getchar();
  getchar();//还有一个问题:为什么删除这一行后没办法输入q了?
  p = mystrchr(str, ch);
  if ( p )
  {
   puts("找到!");
   puts(p);
  }
  else puts("找不到!");

  puts("输入任何字符除了q继续.");
  gets(str);

 }

 while(*str != 'q');


 puts("退出.");
    return 0;
}

char *mystrchr(char *p, char ch)
{

 char *p_save = p;//删除这一行
 if(*p == '\0') return NULL;

 while(1)

 {
  if(*p == ch)
  {
   return p_save;//修改p_save为p

  }
  else
  {
   if(*++p == '\0') return NULL;
   p_save = p;//删除这一行
  }

 }
}

删除和修改了这三行也没有什么错误,那么这三行有什么用吗,总感觉多此一举。

[此贴子已经被作者于2018-1-13 21:54编辑过]

搜索更多相关主题的帖子: char str puts 输入 return 
2018-01-13 21:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484216-1-1.html




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

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