查找最小的子串

没事做了一个查找最小的子串的题目

源代码如下:

 #include <stdio.h>

main()
{
  char *a="fdsf fdsfasf fasfafasf fdafa fafaa asdf afdfsfsdfsfsdfsdfsd";
  char *ptr;
  int max=0,num=0;
  ptr=a;
  while(*ptr!='/0')
    {
         if((*ptr)!=32)
           {
            num++;
            if(num>max)
              {
                max=num;
              }
           }
         else
           {
            if(num>max)
              {
                max=num;
              }
            num=0;
           }
         ptr++;
    }
  printf("the max child string is %d/n",max);     
}

总结一下,需要注意的几点如下:

第一.判断取到的子串等不等于空格的语句为 if((*ptr)!=32),而不是if((*ptr)!=''),如果那样的话编译器报错为

empty character constant ,查ASC表空格对应的是032,但是在程序中却不能写成if((*ptr)!=032),因为这样编译器把032当成八进制的32处理,最后得出的是错误结果59

第二,如果按以下程序的话    
           while(*ptr!='/0')
    {
         if((*ptr)!=32)
           {
            num++;
           }
         else
           {
            if(num>max)
              {
                max=num;
              }
            num=0;
           }
         ptr++;
    }
 

就没有注意到最后一个子串也需要判断,丢掉了最后一个子串

你可能感兴趣的:(查找最小的子串)