青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

XY

沒有任何借口
posts - 9, comments - 31, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
今天看《C和指針》一書的第6章指針,碰到編程練習的第一題,做了做,感覺差距還很大,把做的代碼貼下來,以備往后溫習。
題目:
       請編寫一個函數,它在一個字符串中進行搜索,查找所有在一個給定字符集合中出現的字符。這個函數的原型如下:char *find(char const *source, char const *chars);
       它的基本想法是查找source字符串中匹配chars字符串中任何字符的第一個字符。函數然后返回一個指向source中第1個匹配所找到的位置的指針。如果source中的所有字符均不匹配chars中的任何字符,函數就返回一個NULL指針。如果任何一個參數為NULL,或任何一個參數所指向的字符串為空,函數也返回一個NULL指針。
       舉個例子,假定source指向ABCDEF。如果chars指向XYZ、JUEY或QQQQ,函數就返回一個NULL指針。如果chars指向XRCQEF,函數就返回一個指向source中C字符的指針。參數所指向的字符串是絕不會被修改的。
      a.你不應該使用任何用于操縱字符串的庫函數(如strcpy,strcmp,index等)。
      b.函數中的任何地方都不應該使用下標引用
代碼:
/**//************************************************************************ 
*   文件名:CharFind.c 
*   文件描述:得到字符串S1中第一個且是字符串S2中的位置指針的算法 
*   創建人: Luyuan, 2008年6月3日 
*   版本號:1.0 
*   修改記錄: 

***********************************************************************
*/
 
#include 
<stdlib.h>
#include 
<stdio.h>

#define TRUE 1
#define FALSE 0

/********方法聲明********************************************************/ 
char *find_char(char const *source, char const *chars);
char *find_char2(char const *source, char const *chars);
char * my_strpbrk(const char *s1 ,const char *s2);
/***********************************************************************/
/*主函數*/
int main()
{
    
char *str1 = "xxammana_babi";
    
char *str2 = "babi";
    
char *p;

    p 
= find_char2(str1, str2);

    printf(
"The first  char of found is %c\n"*p);    

    
if( (p = my_strpbrk(str1,str2)) == NULL)
       printf(
"No same character!\n");
    
else
       printf(
"%c\n",*p);

    str1 
= "abc";
    str2 
= "def";

    
if( (p = my_strpbrk(str1,str2)) == NULL)
       printf(
"No same character!\n");
    
else
       printf(
"%c\n",*p);

    system(
"pause");
    
return 0;
}


/***********************************************************************
* 函 數 名:find_char 
* 參    數: 
*        char const *source [IN] : 進行查找的源字符串 
         char const *chars [IN]: 要查找的目標字符串
* 功能描述: 
*        得到source中第一個且是chars中字符的位置指針。用下標
* 返 回 值:查找成功-找到的字符指針,失敗NULL 
* 拋出異常: 
* 作    者:Luyuan 2008-06-03
***********************************************************************
*/
 
char *find_char(char const *source, char const *chars)
{
    
int iIndex=0, j=0;
    
const char *pS = NULL;
    
int iFound = FALSE;

    
if(source == NULL || chars == NULL)
    
{
        
return NULL;
    }


    
for(; source[iIndex] != NULL; ++iIndex)/*遍歷源字符串字符*/
    
{
        j 
= 0;
        
for(; chars[j] != NULL; ++j)/*遍歷目標字符串字符*/
        
{
            
if(source[iIndex] == chars[j])
            
{
                iFound 
= TRUE;
                
break;
            }
            
        }


        
if(iFound)/*若iFound值為TRUE的話表示字符已經找到*/
            
break;
    }


    pS 
= &source[iIndex];
    
return pS;
}

/***********************************************************************
* 函 數 名:find_char 
* 參    數: 
*        char const *source [IN] : 進行查找的源字符串 
         char const *chars [IN]: 要查找的目標字符串
* 功能描述: 
*        得到source中第一個且是chars中字符的位置指針。沒有用下標
* 返 回 值:查找成功-找到的字符指針,失敗NULL 
* 拋出異常: 
* 作    者:Luyuan 2008-06-03
***********************************************************************
*/

char *find_char2(char const *source, char const *chars)
{
    
int iIndex=0, j=0;
    
const char *pS = NULL;
    
int iFound = FALSE;

    
if(source == NULL || chars == NULL)
    
{
        
return NULL;
    }


    
for(; *(source+iIndex) != NULL; ++iIndex)/*遍歷源字符串字符*/
    
{
        j 
= 0;
        
for(; *(chars+j) != NULL; ++j)/*遍歷目標字符串字符*/
        
{
            
if(*(source +iIndex) == *(chars+j))
            
{
                iFound 
= TRUE;
                
break;
            }
            
        }


        
if(iFound)/*若iFound值為TRUE的話表示字符已經找到*/
            
break;
    }

    
if(!iFound)
    
{
        
return FALSE;
    }

    pS 
= (source+iIndex);
    
return pS;
}

/***********************************************************************
* 函 數 名:my_strpbrk 
* 參    數: 
*        char const *s1 [IN] : 進行查找的源字符串 
         char const *s2 [IN]: 要查找的目標字符串
* 功能描述: 
*        得到s1中第一個且是s2中字符的位置指針。
* 返 回 值:查找成功-找到的字符指針,失敗NULL 
* 拋出異常: 
* 作    者:來源C標準庫函數
***********************************************************************
*/

char * my_strpbrk(const char *s1 ,const char *s2)
{
   
const char *= s2;
   
if (!*s1)
      
return (char *) NULL;

   
while (*s1)/*遍歷源字符串字符*/
   
{
      
for (c = s2; *c; c++)/*遍歷目標字符串字符*/
      
{
        
if (*s1 == *c)
           
break;
      }

      
if (*c)/*若當前字符不為字符串結尾字符“\n”之后,為NULL,則表示已經找到,條件為真*/
        
break;
      s1
++;
   }


   
if (*== '\0')
      s1 
= NULL;

   
return (char *) s1;
}

/********************************FILE END*********************************/
注意:
         1.在上面的代碼中,注意有的地方聲明為const char *,而有些則聲明為char const *,因為無 const * 的定義,故這兩種定義沒有區別,都表示指向常量字符串的指針,即指針的指向的內容不可變,而指針本身可以改變。其次要注意與char * const 的區別,char * const 表示指向字符串的常量指針,即指針本身不可改變,而指針指向的內容可以改變。
         2.我寫的代碼與庫函數有多處區別。首先我單獨定義了變量iFound來標識是否找到了匹配的字符,從而方便外層循環跳出。但由于做判斷并跳出的代碼再內層循環之后,而這時相應的指針已經指向目標字符串的末尾之后,是否找到匹配字符從指針本身即可做出判斷,額外設置變量標識,純屬多余。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产一区二区a毛片| 国产精品xnxxcom| 欧美专区福利在线| 黄色日韩精品| 欧美激情亚洲| 国语自产精品视频在线看| 欧美成人精品一区二区三区| 国产区精品视频| 亚洲精品美女在线| 久久婷婷人人澡人人喊人人爽| 国产精品午夜国产小视频| 久久久国产精彩视频美女艺术照福利| 亚洲欧美日韩专区| 亚洲精品久久久久| 午夜精品视频在线| 亚洲巨乳在线| **性色生活片久久毛片| 巨乳诱惑日韩免费av| 欧美一区2区三区4区公司二百| 欧美激情麻豆| 91久久国产综合久久蜜月精品 | 亚洲制服av| 亚洲精品久久视频| 欧美超级免费视 在线| 欧美视频一区二区三区在线观看| 亚洲制服欧美中文字幕中文字幕| 亚洲无吗在线| 欧美日韩精品是欧美日韩精品| 亚洲欧洲精品一区二区三区波多野1战4 | 午夜欧美不卡精品aaaaa| 欧美成人有码| 亚洲欧美一区二区精品久久久| 夜夜嗨av一区二区三区四季av| 欧美精品成人在线| 一区二区日韩| 亚洲欧洲美洲综合色网| 亚洲永久免费av| 国产午夜一区二区三区| 亚洲精品乱码久久久久久蜜桃91| 亚洲欧美日韩精品久久| 久久久久久久久久久久久久一区| 亚洲日本理论电影| 欧美日韩国产天堂| 农村妇女精品| 日韩一级黄色av| 久久亚洲美女| 午夜精品福利电影| 91久久精品一区二区三区| 国产亚洲一级高清| 国产精品v亚洲精品v日韩精品| 亚久久调教视频| 亚洲欧美另类久久久精品2019| 亚洲国产欧美一区二区三区久久| 久久九九久久九九| 久久久久国产一区二区三区| 久久精品免费观看| 老司机精品视频一区二区三区| 欧美在线免费观看亚洲| av成人老司机| 亚洲一区一卡| 免费亚洲一区| 亚洲精品在线一区二区| 久久免费视频在线| 久久福利电影| 裸体一区二区| 欧美在线关看| 亚洲人在线视频| 亚洲靠逼com| 亚洲主播在线播放| 欧美日韩精品高清| 亚洲天堂男人| 国产精品一区二区a| 蜜臀久久99精品久久久久久9| 久久精品国产免费观看| 欧美日韩精品在线观看| 99re成人精品视频| 亚洲激情另类| 欧美激情国产高清| 国产欧美日韩中文字幕在线| 久久久九九九九| 欧美日韩精品欧美日韩精品| 亚洲视频第一页| 欧美成人精品三级在线观看| 久久亚洲私人国产精品va| 欧美视频一区在线观看| 亚洲精品久久久一区二区三区| 亚洲欧美国产毛片在线| 久久久亚洲精品一区二区三区| 一区二区三区久久精品| 久久久欧美精品sm网站| 国产精品私拍pans大尺度在线| 国语精品一区| 欧美高清视频在线观看| 性欧美激情精品| 女人香蕉久久**毛片精品| 国产一区二区三区在线观看免费| 亚洲欧洲在线播放| 久久久在线视频| 西西人体一区二区| 国产欧美日韩一级| 久久亚洲欧美| 欧美一级视频| 在线免费观看视频一区| 午夜日韩在线观看| 亚洲主播在线观看| 一级成人国产| 国产精品一区二区久久精品| 日韩亚洲欧美在线观看| 亚洲一区二区三区影院| 国产精品一区三区| 亚洲免费高清视频| 欧美性片在线观看| 老司机免费视频久久| 女女同性精品视频| 免费的成人av| 欧美超级免费视 在线| 久久精品国产亚洲一区二区| 美女网站在线免费欧美精品| 亚洲综合第一| 久久久精彩视频| 欧美影院在线| 欧美成人按摩| 男女激情久久| 欧美天天影院| 免费毛片一区二区三区久久久| 久久三级福利| 久久www成人_看片免费不卡| 欧美韩国在线| 欧美sm视频| 黄色成人av网站| 亚洲在线日韩| 六月丁香综合| 一区二区亚洲| 看片网站欧美日韩| 亚洲国产欧美日韩另类综合| 尤物精品国产第一福利三区 | aa日韩免费精品视频一| 欧美电影在线观看| 欧美国产免费| 亚洲免费人成在线视频观看| 久久福利精品| 国产一区二区三区在线观看视频 | 日韩视频在线免费| 牛牛影视久久网| 欧美一区二区免费视频| 美女黄毛**国产精品啪啪| 国产日韩高清一区二区三区在线| 一区二区三区久久精品| 亚洲欧美综合一区| 1024日韩| 国产情侣一区| 免费在线日韩av| 一区二区三区.www| 欧美综合激情网| 亚洲一卡二卡三卡四卡五卡| 国产精品成人v| 久久激情久久| 午夜精品福利在线| 香蕉av777xxx色综合一区| 欧美精品偷拍| 免费在线亚洲| 在线一区二区日韩| 欧美好骚综合网| 欧美 日韩 国产一区二区在线视频 | 欧美在线免费视屏| 亚洲视频在线一区观看| 欧美亚洲免费在线| 99re视频这里只有精品| 蜜臀av一级做a爰片久久| 性欧美暴力猛交69hd| 亚洲摸下面视频| 欧美一区二区免费视频| 夜夜狂射影院欧美极品| 欧美a级片网| 免费视频一区| 欧美精品在线播放| 欧美午夜寂寞影院| 国产日韩1区| 亚洲国产精品一区二区第一页| 日韩午夜中文字幕| 一本色道久久综合亚洲精品小说 | 欧美精品www| 欧美性天天影院| 国产一区视频在线观看免费| 亚洲国产日韩欧美综合久久| 亚洲欧洲av一区二区三区久久| 久久久久亚洲综合| 亚洲第一色在线| 亚洲视频在线一区观看| 亚洲欧美一区二区精品久久久| 欧美福利在线| 亚洲人成在线免费观看| 久久免费精品视频| 亚洲国产精品成人久久综合一区 | 欧美激情亚洲| 久久色中文字幕| 亚洲精品久久在线| 美女精品网站| 久久精品欧洲| 在线观看成人av|