求教在一个字符串中查找指定字符串
函数stringIn()接收两个字符串指针,如果第二个字符串被包含在第一个字符串中,则返回被包含的字符串开始的地址,否则返回空指针,比如:stringIn("hate", "at")返回a的地址
程序代码:
#include <stdio.h> #define SIZE 81 char *stringIn(char *str1, char *str2); int main(void) { char string1[SIZE]; char string2[SIZE]; char *p; printf ("输入一个字符串:\n"); gets(string1); while (*string1 != 'q') { printf("输入要查找的字符串:\n"); gets(string2); p = stringIn(string1, string2); if (p) { printf("找到字符串:\n"); puts(p); } else printf("未找到字符串。\n"); printf ("\n输入一个字符串:\n"); gets(string1); } // endof while printf("程序结束\n"); return 0; } // endof main char *stringIn(char *str1, char *str2) { char *p1 = str1; char *p2 = str2; if ('\0'==*str1 || '\0'==*str2) return NULL; while (1) { if (*str1 == *str2) // 如果str1的字符与str2字符相同 { if ('\0' == *++str2) // 判断str2是否结束 return p1; if ('\0' == *++str1) // 若str1结束,str2未结束,则返回空指针 return NULL; } // endof if else { if ('\0' == *++str1) return NULL; p1 = str1; str2 = p2; } // endof else } // endof while } // endof stringIn
如果有str2 = p2;则当有几个重复字符的时候无法正确找出字符串 如:
[local]1[/local]
而如果没有str2 = p2;则从str2的最后一个字符开始输出 如:
[local]2[/local]
想问下问题出在哪里
[此贴子已经被作者于2015-10-29 22:19编辑过]