题目:前缀判断(5分)
如下的代码判断needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL。比如:"abcd1234"就包含了"abc"为前缀。
char *prefix(char *haystack_start,char *needle_start)
{ char *haystack=haystack_start;
char *needle=needle_start;
while(*haystack&&*needle)
{ if(_____________________) return NULL; //填空位置
}
if(*needle) return NULL;
return haystack_start;
}
解题思路:if判断内return NULL,根据题意应该是*haystack != *needle,又要让while循环下去,所以填空内应该为
(*haystack++) !=(*needle)++
#include<iostream>
#include<cstdio>
char *prefix(char *haystack_start, char *needle_start){
char *haystack = haystack_start;
char *needle = needle_start;
while(*haystack && *needle){
if(*haystack++ != *needle++)return NULL;
}
if(*needle)return NULL; //needle_start的长度大于haystack_start,前面都一样
return haystack_start;
}
int main()
{
char a[105], b[105];
scanf("%s %s", &a, &b);
printf("%s", prefix(a, b));
return 0;
}