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

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>
            亚洲每日更新| 国产欧美精品日韩| 欧美韩日一区| 久久久999| 午夜宅男欧美| 久久久久久久尹人综合网亚洲 | 亚洲精品一区二区网址| 国产日韩欧美亚洲| 国内外成人免费激情在线视频网站| 欧美日韩成人一区| 欧美激情精品久久久久久变态| 欧美体内谢she精2性欧美| 欧美涩涩网站| 国产精品五月天| 亚洲第一二三四五区| 亚洲电影在线播放| 亚洲一级免费视频| 久久精品综合网| 久久综合伊人77777蜜臀| 91久久久久久国产精品| 亚洲第一区在线观看| 欧美亚洲网站| 欧美激情日韩| 99视频精品| 久久久国产精品一区| 欧美va天堂在线| 久久久www免费人成黑人精品| 一区二区三区www| 亚洲精品乱码久久久久久黑人| av成人激情| 午夜在线精品| 欧美一进一出视频| 亚洲国产精品成人va在线观看| 亚洲国产综合在线| 久久久精彩视频| 欧美精品一区二区三区视频| 国产精品美女999| 日韩亚洲综合在线| 久久大逼视频| 在线视频欧美日韩精品| 欧美一区二区三区另类| 欧美大成色www永久网站婷| 国产亚洲欧美另类一区二区三区| 亚洲国产一区二区三区青草影视| 狠狠88综合久久久久综合网| 日韩亚洲国产精品| 久久香蕉精品| 媚黑女一区二区| 亚洲午夜一区二区| 欧美日韩亚洲综合| 亚洲激情一区二区三区| 99热在线精品观看| 欧美激情第3页| 性一交一乱一区二区洋洋av| 国产精品久久久久久影视| 亚洲日本欧美日韩高观看| 乱中年女人伦av一区二区| 亚洲永久免费| 国产精品黄色在线观看| 亚洲天堂激情| 亚洲精品国产欧美| 欧美理论片在线观看| 亚洲欧洲另类国产综合| 亚洲国产日韩欧美在线99| 久久天天躁狠狠躁夜夜av| 国产欧美精品日韩| 久久午夜视频| 久久成人精品一区二区三区| 国模精品一区二区三区| 久久精品国产久精国产爱| 亚洲一区二区精品在线观看| 国产欧美日韩综合| 香蕉av福利精品导航| 午夜一区二区三区不卡视频| 国产精品久久久999| 激情懂色av一区av二区av| 蜜桃av噜噜一区| 久久久久久久网| 亚洲精一区二区三区| 欧美高清视频在线播放| 欧美一区二区三区精品电影| 国产亚洲在线观看| 久色婷婷小香蕉久久| 欧美大学生性色视频| 亚洲三级免费观看| 一本色道久久综合| 国产精品草草| 欧美**字幕| 一本久道久久综合婷婷鲸鱼| 欧美黑人多人双交| 国产精品嫩草久久久久| 久久精品盗摄| 欧美激情一区二区三区蜜桃视频 | 亚洲一区3d动漫同人无遮挡| 欧美三级在线视频| 性欧美1819性猛交| 亚洲欧美日韩精品久久久久| 欧美日韩午夜激情| 葵司免费一区二区三区四区五区| 久久久久在线| 亚洲综合首页| 久久久久这里只有精品| 国产在线精品自拍| 一区二区高清视频在线观看| 国产一区视频在线看| 亚洲看片一区| 国产亚洲一区二区精品| 久久久福利视频| 欧美肉体xxxx裸体137大胆| 欧美专区18| 欧美日韩中文字幕在线| 久久久人人人| 欧美日韩视频在线| 欧美激情视频一区二区三区不卡| 欧美日韩精品高清| 欧美不卡高清| 国产精自产拍久久久久久| 欧美电影免费观看高清| 国内精品视频在线观看| 99国产精品久久久| 亚洲精品免费在线观看| 亚洲欧美日韩在线综合| 亚洲精品1234| 欧美伊人久久久久久午夜久久久久 | 在线欧美三区| 久久超碰97中文字幕| 一卡二卡3卡四卡高清精品视频| 亚洲电影免费在线 | 亚洲欧美日韩精品久久奇米色影视| 一本不卡影院| 国产精品99久久久久久白浆小说| 久久久精品国产99久久精品芒果| 久久精品30| 国产精品久久午夜夜伦鲁鲁| 久久久精品一区二区三区| 国产欧美91| 99在线热播精品免费| 中文日韩电影网站| 欧美精品成人91久久久久久久| 在线一区二区三区四区五区| 欧美三级电影一区| 亚洲精品视频中文字幕| 国产精品99久久久久久白浆小说 | 欧美成人自拍视频| 国内精品久久久| 久久精品女人| 久久久久久久久蜜桃| 永久免费视频成人| 欧美伊人精品成人久久综合97| 亚洲欧美另类综合偷拍| 欧美日韩国产精品一卡| 亚洲国产小视频在线观看| 一本一本a久久| 欧美日韩国产精品| 亚洲男同1069视频| 欧美在线观看网址综合| 久久欧美中文字幕| 亚洲人成毛片在线播放| 日韩网站免费观看| 欧美三区美女| 亚洲欧美中文字幕| 亚洲大胆av| 亚洲一二三四区| 欧美 日韩 国产在线| 亚洲免费黄色| 午夜精品久久久99热福利| 在线日韩一区二区| 欧美日本在线看| 午夜伦欧美伦电影理论片| 久久久99爱| 亚洲视频 欧洲视频| 国产精品麻豆成人av电影艾秋 | 亚洲人成毛片在线播放| 性久久久久久久久| 黄色成人在线免费| 欧美性猛交99久久久久99按摩 | 亚洲精品小视频在线观看| 国产欧美一区二区精品婷婷| 美国成人直播| 夜夜嗨av一区二区三区中文字幕 | avtt综合网| 亚洲社区在线观看| 亚洲黄色在线| 国产精品久久久久久久浪潮网站| 久久久久高清| aa亚洲婷婷| 亚洲国产影院| 久久精品1区| 亚洲视频在线免费观看| 黄色一区二区在线| 欧美在线视频全部完| 制服丝袜亚洲播放| 女同一区二区| 久久精品成人一区二区三区| 亚洲三级电影全部在线观看高清| 国产一区二区三区四区hd| 欧美日韩国产成人高清视频| 亚洲电影在线看| 久久中文精品| 午夜精品短视频|