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

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>
            久久久福利视频| 91久久精品一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 欧美大胆成人| 欧美 日韩 国产精品免费观看| 黄色成人精品网站| 欧美暴力喷水在线| 欧美日韩卡一卡二| 午夜精品电影| 久久久国产精彩视频美女艺术照福利| 一区二区三区在线不卡| 欧美激情国产日韩精品一区18| 欧美激情欧美激情在线五月| 国产精品99久久久久久白浆小说| 一本色道久久综合亚洲精品小说| 国产精品美女999| 久久久久一区二区| 蜜臀av在线播放一区二区三区| 亚洲精品美女91| 中文精品在线| 伊人婷婷久久| 日韩视频第一页| 国产亚洲欧美另类中文| 亚洲国产一区二区三区高清| 国产精品盗摄一区二区三区| 老司机免费视频久久| 欧美精品aa| 久久精品一二三| 欧美激情精品久久久六区热门 | 久久麻豆一区二区| 999在线观看精品免费不卡网站| 在线亚洲一区二区| 亚洲精品国产品国语在线app| 亚洲一区二区免费在线| 亚洲狠狠丁香婷婷综合久久久| 一区二区高清在线观看| 亚洲国产精品成人综合| 欧美亚洲三区| aaa亚洲精品一二三区| 久久久久久9| 亚洲欧美日韩在线综合| 欧美成人小视频| 久久性天堂网| 国产乱码精品一区二区三| 国产一区二区三区四区hd| 亚洲乱码国产乱码精品精天堂 | 久久久精品久久久久| 欧美日韩p片| 美女在线一区二区| 国产欧美一二三区| 中文日韩电影网站| 亚洲一区二区三区中文字幕| 蜜桃久久av| 欧美国产三级| 亚洲国产91色在线| 久久一区精品| 免费短视频成人日韩| 国产综合色精品一区二区三区| 亚洲性感激情| 亚洲男人的天堂在线| 欧美日韩精品久久久| 亚洲人成毛片在线播放女女| 一区二区三区在线不卡| 久久久久国产精品一区三寸| 久久精品中文| 狠狠色狠色综合曰曰| 欧美专区日韩视频| 美日韩精品免费观看视频| 国产日产精品一区二区三区四区的观看方式 | 亚洲电影在线免费观看| 在线看国产日韩| 久久久综合香蕉尹人综合网| 蜜桃精品久久久久久久免费影院| 精品成人国产在线观看男人呻吟| 欧美一级日韩一级| 另类综合日韩欧美亚洲| 亚洲国产成人在线播放| 欧美国产亚洲另类动漫| 亚洲欧洲一区二区三区久久| 99爱精品视频| 国产精品久久久久久久久久久久久久 | 亚洲少妇一区| 欧美中文日韩| 永久免费精品影视网站| 欧美大胆成人| 亚洲性图久久| 久久这里只有| 一本色道久久综合狠狠躁篇怎么玩| 欧美日韩伦理在线| 欧美一级在线视频| 欧美激情网站在线观看| 亚洲一区二区在线免费观看| 国产视频自拍一区| 久久综合狠狠综合久久综青草 | 亚洲国产成人久久综合一区| 在线亚洲精品| 国产自产v一区二区三区c| 玖玖视频精品| 亚洲免费综合| 亚洲第一页中文字幕| 亚洲欧美日韩国产成人| 1024亚洲| 欧美日韩一区二区国产| 欧美一区二区三区四区在线观看地址| 欧美成在线视频| 亚洲欧美在线aaa| 亚洲经典三级| 国产一区二区精品丝袜| 欧美精品日韩综合在线| 欧美一区二区啪啪| 99精品久久| 欧美肥婆在线| 久久久久**毛片大全| 9人人澡人人爽人人精品| 国产午夜精品视频| 欧美日韩中文精品| 免费亚洲电影在线| 久久精品视频99| 亚洲女人天堂av| 99在线精品视频| 亚洲第一天堂无码专区| 久久亚洲国产成人| 午夜日韩电影| 亚洲一区二区三区四区五区午夜| 亚洲电影天堂av| 国产在线观看91精品一区| 欧美午夜精品久久久久久人妖| 欧美本精品男人aⅴ天堂| 欧美在线观看网址综合| 亚洲一区在线免费| 一区二区三区 在线观看视| 亚洲第一久久影院| 欧美黄色一区| 欧美国产大片| 欧美成人免费一级人片100| 久久综合狠狠综合久久激情| 久久精品首页| 久久精品视频在线播放| 欧美专区18| 性欧美1819性猛交| 羞羞视频在线观看欧美| 香蕉久久国产| 欧美尤物巨大精品爽| 性欧美1819性猛交| 欧美在线三区| 久久久久久久久岛国免费| 久久久美女艺术照精彩视频福利播放| 欧美亚洲三区| 久久久久国产精品www| 久久亚洲综合| 欧美99久久| 亚洲激情六月丁香| 夜夜嗨av一区二区三区网站四季av| 一区二区不卡在线视频 午夜欧美不卡'| 91久久午夜| 亚洲视频碰碰| 欧美在线视频一区二区三区| 老牛嫩草一区二区三区日本| 噜噜噜噜噜久久久久久91| 欧美精品免费在线| 欧美视频中文在线看| 国产女主播一区二区三区| 激情综合五月天| 亚洲精品美女在线| 亚洲欧美经典视频| 久久精品五月| 91久久精品美女高潮| 99视频精品| 久久国产精品久久国产精品 | 亚洲三级观看| 亚洲天堂av高清| 久久久97精品| 欧美日韩国产123| 国产日韩精品入口| 亚洲人www| 欧美在线免费看| 亚洲人成小说网站色在线| 亚洲一区二区毛片| 免费黄网站欧美| 国产视频一区在线观看一区免费| 麻豆精品视频在线观看| 亚洲精品国产拍免费91在线| 亚洲香蕉视频| 欧美1区2区视频| 国产女主播视频一区二区| 亚洲人成网站在线播| 久久成人精品一区二区三区| 欧美激情第10页| 午夜精品偷拍| 欧美日韩一区在线观看视频| 伊人成人在线视频| 亚洲欧美另类中文字幕| 欧美激情精品久久久久久免费印度 | 亚洲一区免费在线观看| 老司机午夜精品视频| 国产精品网曝门| 夜久久久久久| 欧美风情在线| 久久精品在线观看| 国产日韩欧美精品在线|