这两个程序有什么区别吗?
程序代码:
//修改后
#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编辑过]

