<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 303  文章 - 883  trackbacks - 0
    <2007年11月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    歡迎光臨! 
    閑聊 QQ:1074961813

    隨筆分類(357)

    我管理的群

    公共blog

    • n維空間
    • Email : java3d@126.com 群 : 12999758

    參與管理的論壇

    好友的blog

    我的其他blog

    朋友的網站

    搜索

    •  

    最新評論

    用c語言實現函數strcasestr。函數原型:char*strcasestr(const char*haystack,const char*needle) 函數返回字符串指針,指向字符串haystack中第一次出現字符串needle的開始位置,字串匹配時忽略大小寫,如果沒有找到字符串,返回null,完成代碼后,給出5個以上的單元測試用例,以證明你的程序在各種條件下能夠正確運行

    代碼一:

    本人的代碼(編譯環境VC6.0) 請多多指教! 
    #include<iostream>
    #include
    <string>
    using namespace std;

    char*strcasestr(const char*haystack,const char*needle);
    char*bigtolit(const char*str);

    main()
    {
        
    //五個的測試程序
        cout<<strcasestr("abcDEfghi","EF")<<endl;
        cout
    <<strcasestr("111223","11223")<<endl;
        cout
    <<strcasestr("tshihisih","ss")<<endl;
        cout
    <<strcasestr("tshihisih","si")<<endl;
        cout
    <<strcasestr("tshihfsfsah","fsa")<<endl;

      
    return 0;
    }


    char*strcasestr(const char*haystack,const char*needle)
    {
        
    string str = bigtolit(haystack);
        
    string str1 = bigtolit(needle);

        
    int pos = str.find(str1);

        
    if(0 != (pos+1))
        
    {
            
    char *= new char;
            itoa((pos
    +1),c,10);
            
    return c;
        }

        
    else
        
    {
            
    char *= "NULL";
            
    return c;
        }

    }


    char*bigtolit(const char*str)
    {
        
    char *hay = new char;
        memset(hay,
    0,sizeof(hay));

        
    for(int i=0;i<strlen(str);i++)
        
    {   
            hay[i] 
    = tolower(str[i]);     
        }

        
        
    return hay;
    }
     
    運行結果:
    5
    2
    NULL
    7
    8



    代碼二:


    群里IT007朋友寫的

    #include <string.h>
    #include 
    <stdio.h>


    char* strcasestr(const char *haystack,const char *needle);

    main()
    {
        
    char  str1[100];
        
    char  str2[50];
        
    char* str;


        
    do{
            
            system(
    "cls");

            printf(
    "請分別輸入長度不大于100和長度不大于50的兩個字符串(用空格或者回車隔開):\n");
            
            scanf(
    "%s%s",str1,str2);

            
    if(strlen(str1)>100||strlen(str2)>50){
                printf(
    "\n對不起,你輸入的字符串過長,請重新輸入再來!");
                
    continue;
            }


          str
    =strcasestr((const char*)str1,(const char*)str2);

          
    if(!str){
                printf(
    "父串中查找不到與子串匹配的串!\n按Q鍵退出,其它任意鍵繼續!\n");
                
    continue;
            }


        printf(
    "父串中第一個與子串匹配串的位置為:%d\n",str-str1+1);

        printf(
    "按Q鍵退出,其它任意鍵繼續!\n");

        }
    while(getch()!='q');
    }




    //////////////指針版的查找子串在源串中的位置的函數/////////////////
    //加強錯誤處理之后的函數
    //1。當子串為空時進行了處理
    //2。當子串比源串要長時
    //3。每次比較完之后,父串的指針只向前移動一位
    //4。現在可以進行勿略大小寫的判斷比較了(最新)
    //5。修正了一個BUG,即不能進行字母A、a、Z、z的忽略大小寫的判斷
    //6。對忽略大小寫部分的判斷進行了代碼,代碼明顯少了些(最新)
    ////////////////////////////////////////////////////////////////////


    /*
    ////////////////////////////

    函數原型:char *strcasestr(const char *haystack,const char *needle) 

    函數功能:指向字符串haystack中第一次出現字符串needle的開始位置,
              字串匹配時忽略大小寫,如果沒有找到字符串,返回null.

    ///////////////////////////
    */


    char* strcasestr(const char* haystack,const char* needle)
    {
        
    int i=0;
        
    while(*haystack&&*needle){            
              
    while(*haystack==*needle||\
                  
    *haystack==((*needle>='a'&&*needle<='z')?*needle-32:*needle)||\
                  
    *haystack==((*needle>='A'&&*needle<='Z')?*needle+32:*needle)){
                
    if(!*(++needle))return  (char*)haystack-i;
                
    if(!*(++haystack))return 0;
                i
    ++;
            }

            needle
    -=i;
            
    //haystack=haystack-i+1;
            haystack-=(i-1);
            i
    =0;
        }

        
    return 0;
    }


    運行結果:
    請分別輸入長度不大于100和長度不大于50的兩個字符串(用空格或者回車隔開):
    FFadbcdddDD
    DDd
    父串中第一個與子串匹配串的位置為:
    7
    按Q鍵退出,其它任意鍵繼續
    !


    地震讓大伙知道:居安思危,才是生存之道。
    posted on 2007-11-16 13:37 小尋 閱讀(2851) 評論(2)  編輯  收藏 所屬分類: c/c++/C#/pasic/vb/php/asp(.net)/win-cgi/xml...

    FeedBack:
    # re: C字符串處理 2008-02-29 13:01 sPhinX
    “用c語言實現函數strcasestr。”

    #include<iostream>
    #include<string>
    using namespace std;

    這好像是題意都沒有讀懂吧。

    這樣的庫函數我是不敢用,你呢?  回復  更多評論
      
    # re: C字符串處理[未登錄] 2008-02-29 15:52 尋覓
    呵呵^_^
    非常感謝您的指正
    有時間 我定改過來   回復  更多評論
      
    主站蜘蛛池模板: 亚洲欧洲国产综合| 亚洲国产精品成人| 久久久久久亚洲AV无码专区| av电影在线免费看| 最新亚洲成av人免费看| h片在线观看免费| 在线亚洲97se亚洲综合在线| j8又粗又长又硬又爽免费视频| 亚洲日本韩国在线| 在线观看黄片免费入口不卡| 亚洲一级毛片免费看| 99在线视频免费观看视频 | 免费毛片a线观看| 久久精品国产亚洲av麻豆| 亚洲日本VA午夜在线电影| 最新仑乱免费视频| 亚洲AV无码一区二区一二区| 国产在线观看免费不卡| 日韩免费高清一级毛片| 亚洲乱码中文字幕综合| 日韩中文字幕免费视频| 国产亚洲精品不卡在线| 国产成人免费AV在线播放| 亚洲综合色一区二区三区小说| 成人免费的性色视频| 亚洲欧美国产欧美色欲| 亚洲AV无码专区日韩| 国内精品久久久久影院免费 | 亚洲中文字幕日产乱码高清app| 91在线免费观看| 亚洲精品亚洲人成在线麻豆| 卡一卡二卡三在线入口免费| 精品久久久久久无码免费| 久久99亚洲网美利坚合众国| 日韩激情无码免费毛片| 少妇性饥渴无码A区免费| 亚洲av无码久久忘忧草| 亚洲免费日韩无码系列| 自拍偷自拍亚洲精品偷一| 国内一级一级毛片a免费| 国产国产人免费人成成免视频 |