• <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>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            徹底搞定0x0d和0x0a

            Posted on 2008-09-18 15:01 Prayer 閱讀(11330) 評論(0)  編輯 收藏 引用 所屬分類: C/C++LINUX/UNIX/AIX

                   什么是0x0d和0x0a,可能大部分人都知道是回車和換行字符,但那個是回車,那個是換行?估計很多人都一時說不清楚了---也許你不相信,那就調(diào)查下周圍的同事吧,估計會包含以下字眼“大概。。。我記得。。。回車是0x0d吧”。這次我移植arm-linux C的程序,至VC++,發(fā)現(xiàn)了很多不同,尤其是這個回車換行浪費我一上午的時間,我決定借此機會徹底搞定他們,這兩個令人討厭的家伙。

                    先說下浪費我一上午的那個東西----教訓是很重要的,希望大家不要重蹈我的覆轍----,在arm-linux下,寫二進制文件,打開文件的時候 這樣寫就可以了fp_wthdisk = fopen(file_pathname,"w");,以w格式寫就可以了。把這段程序移植到vc++后,發(fā)現(xiàn)一旦我向文件寫入0x0a,前邊就會自動加上0x0d,我以為是我寫入數(shù)組的問題,反復檢查也沒有找到毛病,后來同事問我:“你是不是二進制格式寫入的文件?”我說:“是呀,fwrite w格式,沒有問題呀”,后來他說,你試試“wb格式寫入一下”,改為wb后,果真就好了,厲害!,我對他豎起了大拇指。

                 看到這里,上邊促使我下決心搞清楚回車換行的原因說完了。我想可能有人會犯同樣錯誤的。但如果你對以下幾個問題,都知曉了,就不必浪費時間,繼續(xù)看下去了。

            1.在Windows XP Visual C++下,按下回車鍵,系統(tǒng)獲得的字符是0x0d還是0x0a,還是0x0d和0x0a? 

            2.回車(0x0d)的作用是回到本行的行首位置,表示本行已經(jīng)輸入完畢,停留在最后一個位置,還是光標轉(zhuǎn)移到下一行的起始位置?

            。。。。

            1.的答案是僅獲得字符 0x0d

            2.答案是回車的作用只是移動光標至該行的起始位置

            注意:回車和換行在不同環(huán)境下的意義不同,正如sleep(1)和Sleep(1)【注意S大寫】這兩個函數(shù)的不同一樣,sleep(1)在linux下表示延時1s,而Sleep(1)在vc++下表示延時1ms,如果不依據(jù)環(huán)境來討論回車和換行,是無意義的,只能是讓人們誤入歧途和浪費時間。

            我只在arm-linux C和vc++下做了試驗,請大家在接觸其它語言環(huán)境下,小心推廣,不行就自己動手做試驗,最可靠。在arm-linux C和vc++下回車換行的意義如下。

            回車 代碼:CR  ASCII碼:\ r ,十六進制,0x0d,回車的作用只是移動光標至該行的起始位置;

            換行 代碼:LF     ASCII碼:\ n ,十六進制,0x0a,換行至下一行行首起始位置;

            Linuxwindows下,回車試驗

            sprintf(versionbuf,"%s","TEST_VERSION_1_0_11\rabcdefg\r34567\n");

                   printf("%s",versionbuf);

            均打印輸出:34567fgRSION_1_0_11,證明了以上結(jié)論。

            其實回車和換行之所以把大家搞迷糊的一個重要原因,是大家把鍵盤的 “回車鍵”,0x0d表示“回車”,我們在windows下的txt文件下敲下的回車鍵等情況攪在了一起。在鍵盤上敲下回車鍵,在不同軟件下獲得字符大有不同。

            Windows下在txt文件中敲下回車鍵,然后16進制觀察,你會發(fā)現(xiàn)獲得了2個字符,0x0d和0x0a,這個大家都知道,但這不意味著,在任何情況下敲下回車鍵,都會獲得0x0d和0x0a。

            在linux下,你對一個文件,敲下回車鍵,你就會發(fā)現(xiàn),它每次只增加一個字符。

             
            中文国产成人精品久久亚洲精品AⅤ无码精品 | 97久久综合精品久久久综合| 日韩AV毛片精品久久久| 日本精品久久久久中文字幕| 久久久久久国产精品免费无码| 中文字幕精品久久久久人妻| 欧美与黑人午夜性猛交久久久| 国内精品久久久久久久久电影网| 四虎国产精品免费久久久| 久久九九亚洲精品| 91久久精品视频| 久久久久久一区国产精品| 久久97久久97精品免视看秋霞| 99热成人精品免费久久| 久久精品国产99久久久香蕉| 久久人人爽人人爽人人片AV东京热 | 久久精品国产亚洲av瑜伽| 久久国产精品免费一区| 欧美久久久久久精选9999| 久久精品极品盛宴观看| 久久午夜福利无码1000合集| 亚洲成色WWW久久网站| 狠狠88综合久久久久综合网| 久久精品国产精品青草app| 韩国三级中文字幕hd久久精品 | 国产精品99久久久久久人| 久久精品无码一区二区三区| 久久人人爽人人爽人人片AV麻豆 | 久久综合狠狠综合久久综合88| 国产精品久久久久久影院| 久久精品成人免费国产片小草| 久久久久久久波多野结衣高潮| 久久国产色AV免费观看| 久久99精品久久久久久野外| 狠狠色综合网站久久久久久久高清| AV无码久久久久不卡网站下载| 国产香蕉97碰碰久久人人| 色婷婷久久综合中文久久蜜桃av | 亚洲精品乱码久久久久66| 日韩精品久久久久久| 久久精品国产亚洲av日韩|