边界测试??让BUG现形
作者:网络转载 发布时间:[ 2011/12/5 10:56:53 ] 推荐标签:
部分,而其中的赋值给place的point却居然是一个不确定的垃圾值。
应该如何正确地给出这个问题的代码呢?正确解决问题的前提是正确地提出问题。原来问题的提法本身有很多不正确或不严谨的地方。例如,“将此字符串中长的单词输出”,这个要求本身是似是而非很不明确的。比如,字符串中有两个单词长度相同且都长于其他单词,究竟应该输出这两个单词中的任何一个还是需要同时输出这两个单词?再有,要求函数“输入一行字符”也非常无聊。为了能正确地解决问题,有必要对原问题的错误要求进行如下更正:
写一个函数,输出字符串中的任一长度长的单词。这里所谓的单词,是指不含空白字符的连续字符序列。
#include
void print_a_longestword ( const char [] ) ;
int be_white ( const char ) ;
int find_begin( char const [] , unsigned ) ;
int find_end ( char const [] , unsigned ) ;
void output ( char const [] , unsigned , unsigned ) ;
int main( void )
{
printf("%s中一长单词为:",""); //测试""
print_a_longestword("");
printf("%s中一长单词为:","
"); //测试"
"
print_a_longestword("
");
printf("%s中一长单词为:"," abc "); //测试" abc "
print_a_longestword(" abc ");
printf("%s中一长单词为:"," abc abcd "); //测试" abc abcd "
print_a_longestword(" abc abcd ");
return 0;
}
void output( char const str[] , unsigned from , unsigned to )
{
while(from < to)
putchar(str[from ++]);
putchar(‘
‘);
}
int find_end ( const char str[] , unsigned from )
{
while( str[from]!=‘ ‘ && ! be_white( str[from] ) )
from ++ ;
return from ;
}
int find_begin ( const char str[] , unsigned from )
{
while( be_white( str[from] ) )
from ++ ;
return from ;
}
int be_white( const char c )
{
return c == ‘ ‘ ||
c == ‘ ‘ ||
c == ‘
‘ ;
}
void print_a_longestword ( char const line[] )
{
unsigned site = 0U ;
unsigned begin_longest , end_longest ;
begin_longest = end_longest = site ;
do{
int this_begin , this_end ;
site = this_begin = find_begin ( line , site ) ;//单词开头
site = this_end = find_end ( line , site ) ;//单词结尾
if( ( this_end - this_begin )
> ( end_longest - begin_longest ) ){
begin_longest = this_begin ;
end_longest = this_end ;
}
}while( line[ site ] != ‘ ‘) ;
output( line , begin_longest , end_longest );
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11