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