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

            把握命運,追逐夢想

            對自己所做的事要有興趣,同時還要能夠堅持不懈

            統計

            留言簿(1)

            閱讀排行榜

            評論排行榜

            #

            memcmp的使用

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

            int main()
            {
                
            char a[9= "fadsgdga";
                
            char b[13]= "fadsgdgdfsd";

                
            int cmp = memcmp(a,b,8);
                
            if(cmp == 0)
                
            {
                    printf(
            "相等");
                }

                
            else if( cmp == 1)
                
            {
                    printf(
            "大于");
                    
                }

                
            else
                
            {
                    printf(
            "小雨");
                }

                
            return 0;
            }

            posted @ 2009-07-29 15:44 把握命運 閱讀(191) | 評論 (0)編輯 收藏

            讀取mp3文件的尾部信息

            #include<string.h>
            #include
            <stdio.h>
            struct Infomation
            {
                
            char tag[4];
                
            char name[31];
                
            char singer[31];
                
            char aname[31];
                
            char year[5];
                
            char content[29];
                
            char other[4];
            }
            ;

            int main()
            {
                FILE 
            *pFile;
                pFile 
            = fopen("11.mp3","r+");

                
            char strbuf[129];

                fseek(pFile,
            -128,2);
                
                
            int ret = 0;

                ret 
            = fread(strbuf,128,1,pFile);

                Infomation a;
                memset(
            &a,0,sizeof(Infomation));

                rewind(pFile);

                memcpy(
            &a.tag,strbuf,3);
                memcpy(
            &a.name,&strbuf[3],30);

                memcpy(
            &a.singer,&strbuf[33],30);
                memcpy(
            &a.aname,&strbuf[63],30);
                memcpy(
            &a.year,&strbuf[93],4);
                memcpy(
            &a.content,&strbuf[97],28);
                memcpy(
            &a.other,&strbuf[125],3);

                printf(
            "%s\n",a.tag);
                printf(
            "%s\n",a.name);
                printf(
            "%s\n",a.singer);
                printf(
            "%s\n",a.aname);
                printf(
            "%s\n",a.year);
                printf(
            "%s\n",a.content);
                printf(
            "%s\n",a.other);

                fclose(pFile);
                
            return 0;

            }

            //
            //MP3歌曲的基本信息存在了MP3文件的最后128個字節里,
            //其結構是:
            //1-3 TAG 
            //4-33 歌曲名(Take Me To Your Heart )
            //34-63 歌手名(Michael Learns to Rock)
            //64-93 專輯名(Take Me to Your Heart)
            //94-97 年(2004)
            //98-125 備注 (http://www.uptu.com
            //126 保留位,這時為0,則說明有音軌,下一位就是音軌
            //127 保留位,為音軌(第幾首歌)(OC)
            //128 保留位 (風格)(66)
            //請寫出一個讀取MP3歌曲信息的函數,將信息存放在結構成員變量中。

            posted @ 2009-07-29 15:20 把握命運 閱讀(551) | 評論 (0)編輯 收藏

            數組 指針 const

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

            int main()
            {
                
            //下面的寫法是可以的
                char a[5= "abcd";    
                
            const char b[10= "safajshjf";
                
            const char *= "asdfdsgd";
                
            char *const d = "safdsfgsdg";
                
            const char* const e = "adsgfsdg";


                
            //下面的c和上面的d,e不同,c不是const的,而是c指向的內存區是const的,所以下面的寫法可以
                c = "fasdffds";
                
            //下面的三行都不行,原因是數組名除了初始化時,再也不能作為左值了。而const類型的d和e也不能再作為左值。
                /*a="afds";
                b = "asfdsfdgg";
                d = "fasdgsdg";
                e = "fasdfgg";
            */



                

                
            //下面的可以,因為第一參數要求是非const的,下面的第一參數都滿足條件
                strcpy(a,"sdfs");
                strcpy(d,
            "sfsdgd");
                
            //下面的不通過,因為第一參數要求是非const的,因為const常量不能修改
                /*strcpy(b,"sfsdgf");
                strcpy(c,"sfsgddg");
                strcpy(e,"safsgdg");
            */


                

                
            //下面的寫法是可以的,因為上面的a數組并不是常量,而是把“abcd”賦值給了a所指向的內存區,所以a的地址可以賦值給別的指針
                char *f=a;
                f 
            = d;
                
            //下面的是不行的,因為b的數組內存是常量的,不可以進行修改,所以不能把b的地址賦值給非const指針
                /*f = b;
                f = c;
                f =e;
            */



                
            //下面的五個都是可以的,因為const和非const的變量都可以賦值給const類型的變量
                const char *= a;
                g  
            =b;
                g  
            = c;
                g 
            = d;
                g 
            = e;

                
            //下面嘗試修改上面的五塊內存區


                
            return 0;
            }


            //總結:
            //const指針的用法如上例所示,分別是限制指針和指針內存區域的,但是雖然有這些限制,也僅是針對當前變量的限制,如果原本的內存地址已知,后來賦值給了const*類型的
            //指針,那么利用原來的內存地址依然是可以修改該內存區域的。
            //
            //數組名相當于*const類型的,因為數組名和*const都在以后都不能再給數組名或指針賦值,而只能修改數組的內存區或指針指向的內存區。
            //const* typename const類型的是指針和內存區都不可以修改的。
            //
            //無論是整形數組還是字符數組,初始化的時候都是賦值初始化的,不要把字符數組的初始化理解成把一個常量字符串的指針賦值給了字符數組名。
                //下面的寫法是可以的
                char a[5= "abcd";    
            00401740  mov         eax,dword ptr [___xi_z+2Ch (4020E4h)] 
            00401745  mov         dword ptr [ebp-0Ch],eax 
            00401748  mov         cl,byte ptr [___xi_z+30h (4020E8h)] 
            0040174E  mov         
            byte ptr [ebp-8],cl 
                
            const char b[8= "safader";
            00401751  mov         edx,dword ptr [___xi_z+34h (4020ECh)] 
            00401757  mov         dword ptr [ebp-1Ch],edx 
            0040175A  mov         eax,dword ptr [___xi_z
            +38h (4020F0h)] 
            0040175F  mov         dword ptr [ebp
            -18h],eax 
                
            const char *= "asdfdsgd";
            00401762  mov         dword ptr [ebp-24h],offset ___xi_z+3Ch (4020F4h) 
                
            char *const d = "safdsfgsdg";
            00401769  mov         dword ptr [ebp-20h],offset ___xi_z+48h (402100h) 
                
            const char* const e = "adsgfsdg";
            00401770  mov         dword ptr [ebp-28h],offset ___xi_z+54h (40210Ch) 
            //可以看出來,這是上面的程序的前五行的代碼的反匯編,前兩行的是賦值,匯編代碼可以看出來,先把靜態區中的常量字符串賦值給了eax,然后后eax轉給字符數組的內存區,但是后面的三個則是直接把靜態區的常量字符串的地址賦值給了指針,如果只賦值給const*指針還好,但是連*const指針也是直接賦值,結果導致了后面的strcpy(d,"sfd")的靜態區內存訪問錯誤

            posted @ 2009-07-29 10:19 把握命運 閱讀(1234) | 評論 (0)編輯 收藏

            判斷閏年

            #include<stdio.h>
            int main()
            {
                
                printf(
            "請輸入年份:");
                
            int year = 0;
                scanf(
            "%d",&year);
                
            if(year%4 == 0 )
                
            {
                    
            if(year%100 == 0 )
                    
            {
                        
            if(year%400 == 0)
                        
            {
                            printf(
            "%d是閏年",year);
                        }

                        
            else
                        
            {
                            printf(
            "%d不是閏年",year);
                        }

                    }

                    
            else
                    
            {
                        printf(
            "%d是閏年",year);
                    }

                }

                
            else
                
            {
                    printf(
            "%d不是閏年",year);
                }

                scanf(
            "%d",&year);
                
            return 0;
            }

            posted @ 2009-07-28 16:54 把握命運 閱讀(119) | 評論 (0)編輯 收藏

            malloc的錯誤和正確用法

            #include<stdlib.h>
            #include
            <stdio.h>
            int main()
            {
                
            char *p;
                p 
            = (char*)malloc(10);
                p 
            = "Hello";
                printf(
            "%s\n",p);
                
            return 0;
            }


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

            int main()
            {
                
            char *str;
                str 
            =(char*)malloc(10);
                strcpy(str,
            "Hello");
                printf(
            "String is %s",str);
                free(str);
                
            return 0;
            }

            posted @ 2009-07-28 16:42 把握命運 閱讀(223) | 評論 (0)編輯 收藏

            qsort的用例

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

            int sort_func(const void*a,const void*b)
            {
                
            return (strcmp((const char*)a,(const char*)b));
            }


            int main()
            {
                
            char list[5][4= {"car","cat","cab","cap","can"};
                qsort((
            void*)list,5,sizeof(list[0]),sort_func);
                
            for(int i = 0; i <5++i)
                
            {
                    printf(
            "%s",list[i]);
                    printf(
            "\n");
                }

                
            return 0;
            }

            posted @ 2009-07-28 16:39 把握命運 閱讀(189) | 評論 (0)編輯 收藏

            上課的atof函數的使用例子

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

            int main()
            {
                
            float f;
                
            char *str = "34.31";
                f 
            = atof(str);
                printf(
            "%.2f",f);
                
            return 0;

            }

            posted @ 2009-07-28 16:37 把握命運 閱讀(356) | 評論 (0)編輯 收藏

            隨機數函數rand和種子函數srand的使用

            #include<stdlib.h>
            #include
            <stdio.h>
            #include
            <time.h>

            int main()
            {
                
            int i;
                time_t t;
                srand((unsigned)time(
            &t));
                printf(
            "ten random numbers from 0 to 99\n\n");
                
            for(i = 0; i<10; i++)
                
            {
                    printf(
            "%d\n",rand()%100);
                }

            }

            posted @ 2009-07-28 16:32 把握命運 閱讀(430) | 評論 (1)編輯 收藏

            剛剛上課兩天,記錄點小代碼(求素數的)

                 摘要: #include<stdio.h>#include<memory.h>#include<math.h>struct PrimeBlock{    PrimeBlock();    void addPrime(int );   ...  閱讀全文

            posted @ 2009-07-28 16:26 把握命運 閱讀(314) | 評論 (0)編輯 收藏

            僅列出標題
            共5頁: 1 2 3 4 5 
            亚洲精品国产字幕久久不卡| 亚洲国产精品婷婷久久| 久久精品国产半推半就| 色偷偷偷久久伊人大杳蕉| 亚洲狠狠婷婷综合久久久久| 亚洲va久久久久| 7777精品久久久大香线蕉| 噜噜噜色噜噜噜久久| 久久久久这里只有精品| 久久久噜噜噜久久| 亚洲?V乱码久久精品蜜桃| 久久99久久成人免费播放| 久久天天日天天操综合伊人av| 久久国产视频99电影| 伊人久久大香线蕉AV一区二区| 久久精品99无色码中文字幕| 伊人久久大香线蕉无码麻豆| 婷婷久久久亚洲欧洲日产国码AV| 久久久久亚洲精品无码蜜桃| 97久久国产亚洲精品超碰热 | 亚洲?V乱码久久精品蜜桃| 久久久久九九精品影院| 久久福利资源国产精品999| 伊人久久综合精品无码AV专区| 久久天天躁狠狠躁夜夜avapp| 久久91精品久久91综合| 久久亚洲国产精品五月天婷| 99久久精品免费看国产一区二区三区 | 婷婷伊人久久大香线蕉AV| 国产91色综合久久免费| 久久精品国产国产精品四凭| 久久久久久久97| 精品视频久久久久| 亚洲av伊人久久综合密臀性色| 51久久夜色精品国产| 中文精品久久久久人妻不卡| 久久国产视屏| 久久最新精品国产| 亚洲va久久久噜噜噜久久狠狠 | 久久婷婷人人澡人人| 2021久久国自产拍精品|