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

            天之道

            享受編程的樂趣。
            posts - 118, comments - 7, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            刪數問題

            時間限制:1000 ms  |  內存限制:65535 KB
            描述

                       給出一個N位正整數(首位不為0),去掉其中S個數字后剩下的數字按左右次序組成一個新的N-S位正整數(首位不能為0)。對給定的NS,尋找一種刪數規則使得剩下得數字組成的新數最小。

            輸入

                     第一行一個正整數T ,表示有T組測試數據。

                    對于每組測試數據:第一行兩個正整數 n ,s (s<  n <= 10, 000) (用空格隔開); 第二行為一個n 位正整數。

            輸出

                     對于每組測試數據輸出一行:最小的新數。

            樣例輸入
            2 10 2 1234334789 11 3 90019008798 
            樣例輸出
            12333478 19008798

            #include<stdio.h>
            #include
            <string.h>
            int main()
            {
                
            int n,s,k,i,m;
                
            char a[10000];
                scanf(
            "%d",&n);
                
            while(n--)
                {   
                    i
            =0;
                    scanf(
            "%d%d",&m,&s);
                    scanf(
            "%s",a);
                    
            while(s>0)
                    {
                        
            while(i<strlen(a) && a[i]<=a[i+1&& a[i]!='0') i++;
                        
            for(k=i;k<strlen(a);k++)
                        {
                            a[k]
            =a[k+1];
                        }
                        s
            --;
                    }
                    printf(
            "%s\n",a);
                }
                
            return 0;

            }

            posted @ 2012-05-03 23:55 hoshelly 閱讀(513) | 評論 (1)編輯 收藏


            在php5.3.0后的版本,取消了對ereg函數的支持,惹得若干程序需要改動,譬如我安裝的zen-card1.3.8,頗不方便。

            錯誤:
            Deprecated: Function ereg() is deprecated in ……

            解決方法一:
            退回去用php5.2。(眾人皆贊道:果是好法子?。?/p>

            解決方法二:
            繼續用php5.3,但是修改devel/devel.modul的460行:
            if ($errno & (E_ALL & ~E_NOTICE & ~E_DEPRECATED)) {
            把丫deprecated錯誤給忽略掉。(眾人皆又贊道:果……果……果是好法子?。?/p>

            解決方法三:
            動程序鳥,把ereg換成preg_match,ereg_replace也需得換成preg_replace。只得注意的是
            ereg(’^[0-9]‘    需修改成   preg_match(’/^[0-9]/‘
            無敵//必須加,哈哈。(眾人皆俯首贊道:王道也?。?/p>來源:http://www.chineseinla.com/f/page_viewtopic/t_25780.html

             
             
             
             
             
            ====2===========================================================
             
            信息提示是不推薦使用ereg_replace(),你加個@看能不能屏蔽掉,@ereg_replace(...)。
            不行的話,改改咯。
            1.define('DEDEADMIN', preg_replace("/[\/\\\\]{1,}/", '/', dirname(__FILE__) ) );
            2.define('DEDEADMIN',strtr(dirname(__FILE__),'\\/','//'));
             
             

            posted @ 2012-04-15 15:18 hoshelly 閱讀(265) | 評論 (0)編輯 收藏

            題目描述

            用指針對于任意輸入4個字符串進行相連組合,輸入的四個字符串用空格分開,要求輸出所有的兩兩相連結果。例如輸入的4個字符串為a bc def ghij, 輸出結果為:
            a+a=aa
            a+bc=abc
            a+def=adef
            a+ghij=aghij
            bc+a=bca
            ... (以此類推)
            ghij+def=ghijdef
            ghij+ghij=ghijghij

            要求不允許使用任何字符串庫函數。

            輸入

            輸入四個任意的字符串,用空格分開

            輸出

            輸出所有的兩兩相連結果

            樣例輸入

            a bc def ghij

            樣例輸出

            a+a=aa
            a+bc=abc
            a+def=adef
            a+ghij=aghij
            bc+a=bca
            bc+bc=bcbc
            bc+def=bcdef
            bc+ghij=bcghij
            def+a=defa
            def+bc=defbc
            def+def=defdef
            def+ghij=defghij
            ghij+a=ghija
            ghij+bc=ghijbc
            ghij+def=ghijdef
            ghij+ghij=ghijghij


            代碼如下:

            #include<stdio.h>
            int main()
            {
                int i,j;
                char str[4][100];
                for(i=0;i<4;i++)
                    scanf("%s",str[i]);
                for(i=0;i<4;i++)
                    for(j=0;j<4;j++)
                    {
                        printf("%s+%s=%s%s\n",str[i],str[j],str[i],str[j]);
                    
                    }
                return 0;
            }
               

            posted @ 2012-04-11 23:20 hoshelly 閱讀(223) | 評論 (0)編輯 收藏


            首先安裝jdk于C,安裝后目錄為:C:\Program Files\Java\jdk1.6.0,然后右鍵我的電腦,選擇高級--->環境變量,配置如下:

            JAVA_HOME=C:\Program Files\Java\jdk1.6.0;

            path=%JAVA_HOME%\bin;

            classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tool.jar;

            點擊確定完成。

             

            HelloWorld.java經典測試代碼:

            public class HelloWorld{

            public static void main(String args[]){

            System.out.println("hello world !")

            }

            }

            命令行輸入:javac HelloWorld.java

            生成HelloWorld.class

            命令行輸入:java HelloWorld

            屏幕上打印"hello world !"

             

            很多人在初學Java的時候經常會被書中介紹的一堆環境變量的設置搞得頭昏腦脹,很多書中都會在初裝JDK的時候讓大家設置JAVA_HOME環境變量,在開發程序的時候設置CLASSPATH環境變量,而很多人并不理解這兩個環境變量的作用,我們來分別進行詳細的闡述。

            首先是JAVA_HOME環境變量,我們先來掌握這個環境變量的設置內容,JAVA_HOME這個環境變量的設置內容是JDK的安裝目錄,比如說您的JDK安裝在d:\jdk1.6.0這個目錄下,請您查看一下這個目錄下是不是有一個子目錄bin,bin目錄中是不是有java.exe這個文件,如果是,那么您的JAVA_HOME環境變量的內容應該為d:\jdk1.6.0。那么我們設置這個環境變量的作用是什么呢?就單獨的java開發而言,這個環境變量并沒有任何作用,這就是很多根據書上的描述設置好之后,把一本書學完也沒有用到這個變量,所以很是不理解。

            其實JAVA_HOME變量最好還是設置一下。首先,我們為了能夠編譯和運行java程序,需要在PATH環境變量中把java.exe所在的目錄設置為PATH變量的一部分,目的是為了能夠通過命令行運行javac和java命令成為可能,當你在命令行中輸入javac ...或者java ...的時候,如果提示你一個錯誤:'javac' 不是內部命令或外部命令,也不是可運行的程序或批處理文件。這時候說明操作系統沒有找到你通過命令行輸入的javac這個命令,為什么呢?因為操作系統并 不知道你的javac.exe這個文件在哪里,所以無法執行對應的文件。那么為了能夠讓操作系統找到這個可執行文件,我們就需要把javac.exe這個可執行文件所在的目錄作為PATH環境變量的一部分設置起來,這樣當你在命令行輸入一個命令的時候,操作系統就會自動搜索PATH變量中所指定的所有目錄了。在Windows系統中PATH變量中的所有路徑采用分號分割,如果在Linux系統中采用冒號分割。另外說明一點,如果你設置好了環境變量,在命令行中還是出現同樣的錯誤,那么有兩種可能,一種就是你的設置不正確,另一種就是你的設置沒有生效,一般你可以關閉命令行窗口再重新打開就可以了。這對這個設置,以剛才的目錄為例,那么PATH變量中的內容就是...;d:\jdk1.6.0\bin,這時候我們可以借用已經設定過的JAVA_HOME,將PATH的內容修改為:...;%JAVA_HOME%\bin,這樣的設置有一定的好處,當你的系統中重新安裝JDK,并改變過目錄的話,你只要修改JAVA_HOME的內容就可以了,PATH則不需要修改。此外,JAVA_HOME變量還會有一些其他用途,比如Eclipse這個IDE,它本身是由java程序編寫的,那么在運行的時候必然需要虛擬機的存在,所以Eclipse在啟動時需要查找虛擬機,如果有JAVA_HOME這個變量,那么 Eclipse就會利用這個變量找到虛擬機的路徑。所以雖然開始JAVA_HOME環境變量可以不設置,但是還是建議大家為以后考慮而設置上。

            我們繼續來談論CLASSPATH的問題,很多書上在講解java程序的時候建議大家設置CLASSPATH這個環境變量,我們這里不建議大家設置。原因我們會在稍后的時候看到。講到CLASSPATH,我們首先來看編寫java程序時一直在用的兩個命令javac和java。

            javac的命令語法是這樣的:

            javac <選項> <源文件>

            我們常用的情況是這樣的:

            javac -classpath <類路徑> <要編譯的java源文件>

            這里的類路徑輸入什么呢?這里的類路徑是指要編譯的java源文件中所用的非java的基礎API中的類在那個目錄下,路徑可以是多個目錄,用分號隔開 來。比如說我們要編譯App.java這個文件,而這個文件中用到了com.util這個包中的MyDate這個類,現在我們假設MyDate這個類存在目錄是:d:\mylib\com\util\MyDate.class,那么我們如何編譯App這個類呢?我們的命令如下:

            javac -classpath d:\mylib App.java

            注意這里的classpath的內容,我們只是指定路徑到package所在目錄,并不能把package一起指定進去,而且MyDate.class必須在com\util這個目錄中,因為這個類定義了package為com.util。好了現在你對javac中的classpath明白了嗎?

            我們再來看java這個命令,這個命令的語法是這樣的:

            java [選項] 類 [參數]

            比如說以上面的例子,我們假設App這個類位于com.app這個package中,它的存放目錄是:d:\dev\myapp\com\app\App.class,那么我們該如何運行這個類呢?命令如下:

            java -classpath d:\dev\myapp;d:\mylib com.app.App

            從命令中我們可以看到,在classpath后面我們指定兩個目錄,分別是App這個類的package所在的目錄和MyDate這個類的package 所在的目錄,這里的類路徑要給定的是要運行的類和這個類用到的所有類的package所在的目錄,多個目錄之間用分號隔離開來,最后指定要運行的類的時候必須加上package。

            好了到這里你應該徹底掌握了編譯java程序和運行java程序的訣竅了吧。如果我們在系統環境變量中設置了CLASSPATH的話,在命令行中通過java運行的時候如果再不指定CLASSPATH參數,那么就會導致java虛擬機只是按照CLASSPATH環境變量中的目錄搜索類,而不在你的當前目錄下搜索類,結果自然會出現Exception in thread "main" java.lang.NoClassDefFoundError,所以當你看到這個錯誤的時候請查看一下你的系統環境變量,如果沒有設置 CLASSPATH,那么在檢查一下你的當前目錄。為了確保萬無一失,按照上面講述的例子進行操作是不會發生任何錯誤。

            posted @ 2012-03-31 23:31 hoshelly 閱讀(219) | 評論 (0)編輯 收藏

            cmd怎樣像切換到C盤D盤一樣, 切換到其子目錄



            比如要進入 d:\test\abc 那就 d:(回車) cd\(回車) cd test回車) cd abc(回車) ===== 或者 d:(回車) cd \test\abc(回車)

            cmd命令大全:



            有關某個命令的詳細信息,請鍵入 HELP 命令名
            ASSOC 顯示或修改文件擴展名關聯。
            AT 計劃在計算機上運行的命令和程序。
            ATTRIB 顯示或更改文件屬性。
            BREAK 設置或清除擴展式 CTRL+C 檢查。
            CACLS 顯示或修改文件的訪問控制列表(ACLs)。
            CALL 從另一個批處理程序調用這一個。
            CD 顯示當前目錄的名稱或將其更改。
            CHCP 顯示或設置活動代碼頁數。
            CHDIR 顯示當前目錄的名稱或將其更改。
            CHKDSK 檢查磁盤并顯示狀態報告。
            CHKNTFS 顯示或修改啟動時間磁盤檢查。
            CLS 清除屏幕。
            CMD 打開另一個 Windows 命令解釋程序窗口。
            COLOR 設置默認控制臺前景和背景顏色。
            COMP 比較兩個或兩套文件的內容。
            COMPACT 顯示或更改 NTFS 分區上文件的壓縮。
            CONVERT 將 FAT 卷轉換成 NTFS。您不能轉換
            當前驅動器。
            COPY 將至少一個文件復制到另一個位置。
            DATE 顯示或設置日期。
            DEL 刪除至少一個文件。
            DIR 顯示一個目錄中的文件和子目錄。
            DISKCOMP 比較兩個軟盤的內容。
            DISKCOPY 將一個軟盤的內容復制到另一個軟盤。
            DOSKEY 編輯命令行、調用 Windows 命令并創建宏。
            ECHO 顯示消息,或將命令回顯打開或關上。
            ENDLOCAL 結束批文件中環境更改的本地化。
            ERASE 刪除至少一個文件。
            EXIT 退出 CMD.EXE 程序(命令解釋程序)。
            FC 比較兩個或兩套文件,并顯示
            不同處。
            FIND 在文件中搜索文字字符串。
            FINDSTR 在文件中搜索字符串。
            FOR 為一套文件中的每個文件運行一個指定的命令。
            FORMAT 格式化磁盤,以便跟 Windows 使用。
            FTYPE 顯示或修改用于文件擴展名關聯的文件類型。
            GOTO 將 Windows 命令解釋程序指向批處理程序
            中某個標明的行。
            GRAFTABL 啟用 Windows 來以圖像模式顯示
            擴展字符集。
            HELP 提供 Windows 命令的幫助信息。
            IF 執行批處理程序中的條件性處理。
            LABEL 創建、更改或刪除磁盤的卷標。
            MD 創建目錄。
            MKDIR 創建目錄。
            MODE 配置系統設備。
            MORE 一次顯示一個結果屏幕。
            MOVE 將文件從一個目錄移到另一個目錄。
            PATH 顯示或設置可執行文件的搜索路徑。
            PAUSE 暫停批文件的處理并顯示消息。
            POPD 還原 PUSHD 保存的當前目錄的上一個值。
            PRINT 打印文本文件。
            PROMPT 更改 Windows 命令提示符。
            PUSHD 保存當前目錄,然后對其進行更改。
            RD 刪除目錄。
            RECOVER 從有問題的磁盤恢復可讀信息。
            REM 記錄批文件或 CONFIG.SYS 中的注釋。
            REN 重命名文件。
            RENAME 重命名文件。
            REPLACE 替換文件。
            RMDIR 刪除目錄。
            SET 顯示、設置或刪除 Windows 環境變量。
            SETLOCAL 開始批文件中環境更改的本地化。
            SHIFT 更換批文件中可替換參數的位置。
            SORT 對輸入進行分類。
            START 啟動另一個窗口來運行指定的程序或命令。
            SUBST 將路徑跟一個驅動器號關聯。
            TIME 顯示或設置系統時間。
            TITLE 設置 CMD.EXE 會話的窗口標題。
            TREE 以圖形模式顯示驅動器或路徑的目錄結構。
            TYPE 顯示文本文件的內容。
            VER 顯示 Windows 版本。
            VERIFY 告訴 Windows 是否驗證文件是否已正確
            寫入磁盤。
            VOL 顯示磁盤卷標和序列號。
            XCOPY 復制文件和目錄樹。


            appwiz.cpl------------添加刪除程序

            control userpasswords2--------用戶帳戶設置

            cleanmgr-------垃圾整理

            CMD--------------命令提示符可以當作是 Windows 的一個附件,Ping,Convert 這些不能在圖形環境下 使用的功能要借助它來完成。

            cmd------jview察看Java虛擬機版本。


            command.com------ 調用的則是系統內置的 NTVDM,一個 DOS虛擬機。它完全是一個類似 Virtual PC 的 虛擬環境,和系統本身聯系不大。當我們在命令提示符下運行 DOS 程序時,實際上也 是自動轉移到 NTVDM虛擬機下,和 CMD 本身沒什么關系。


            calc-----------啟動計算器

            chkdsk.exe-----Chkdsk磁盤檢查

            compmgmt.msc---計算機管理

            conf-----------啟動 netmeeting

            control userpasswords2-----User Account 權限設置

            devmgmt.msc--- 設備管理器

            diskmgmt.msc---磁盤管理實用程序

            dfrg.msc-------磁盤碎片整理程序

            drwtsn32------ 系統醫生

            dvdplay--------啟動Media Player

            dxdiag-----------DirectX Diagnostic Tool

            gpedit.msc-------組策略編輯器

            gpupdate /target:computer /force 強制刷新組策略

            eventvwr.exe-----事件查看器

            explorer-------打開資源管理器

            logoff---------注銷命令

            lusrmgr.msc----本機用戶和組

            msinfo32---------系統信息

            msconfig---------系統配置實用程序

            net start (servicename)----啟動該服務

            net stop (servicename)-----停止該服務

            notepad--------打開記事本

            nusrmgr.cpl-------同control userpasswords,打開用戶帳戶控制面板

            Nslookup-------IP地址偵測器

            oobe/msoobe /a----檢查XP是否激活

            perfmon.msc----計算機性能監測程序

            progman--------程序管理器

            regedit----------注冊表編輯器

            regedt32-------注冊表編輯器

            regsvr32 /u *.dll----停止dll文件運行

            route print------查看路由表

            rononce -p ----15秒關機

            rsop.msc-------組策略結果集

            rundll32.exe rundll32.exe %Systemroot%System32shimgvw.dll,ImageView_Fullscreen----啟動一個空白的Windows 圖片和傳真查看器

            secpol.msc--------本地安全策略

            services.msc---本地服務設置

            sfc /scannow-----啟動系統文件檢查器

            sndrec32-------錄音機

            taskmgr-----任務管理器(適用于2000/xp/2003)

            tsshutdn-------60秒倒計時關機命令

            winchat--------XP自帶局域網聊天

            winmsd---------系統信息

            winver-----顯示About Windows 窗口

            wupdmgr-----------Windows Update

            posted @ 2012-03-31 20:36 hoshelly 閱讀(250) | 評論 (0)編輯 收藏

            Description

            在一個二維矩陣中,如果某個位置的數值是該行最大值,同時也是該列最小值,我們則稱該位置是矩陣的鞍點。鞍點在工業控制,建筑力學等方面有著廣泛應用。鞍點可能有多個,也可能沒有。

            請編寫程序找出矩陣的鞍點。

            Input

            第一行輸入T表示有T個測試實例

            第二行輸入兩個參數A和B,分別表示矩陣的行數和列數

            第三行輸入二維矩陣的數據,假定數據都是正整數

            以此類推輸入下個實例

            Output

            輸出鞍點所在的行號和列號,行號和列號都是從0開始編號。

            如果存在多個鞍點,輸出行號和列號最小的鞍點。如果不存在鞍點,輸出-1 -1

            Sample Input

            2
            3 3
            11 77 33
            44 66 55
            22 88 99
            4 2
            22 11
            33 44
            55 66
            11 88

            Sample Output

             1  1
            -1 -1

            #include<iostream>
            using namespace std;
            int main()
            {
                
            int n,max,i,j,k,flag,row_i,row_j;
                
            int a[100][100];
                cin
            >>n;
                
            while(n--)
                {
                    cin
            >>row_i>>row_j;
                    
            for(i=0;i<row_i;i++)
                    {
                        
            for(j=0;j<row_j;j++)
                        {
                            cin
            >>a[i][j];
                        }
                    }

                    
            for(i=0;i<row_i;i++)
                    {
                        max
            =0;
                        flag
            =1;
                        
            for(j=0;j<row_j;j++)
                        {
                            
            if(a[i][j]>a[i][max])
                                max
            =j;
                        }
                        
            for(k=0;k<row_j;k++)
                        {
                            
            if(a[i][k]==a[i][max] && max!=k)
                            {
                                flag
            =0;
                                
            break;
                            }
                        }
                        
            if(flag==1)
                        {
                        
            for(k=0;k<row_i;k++)
                        {
                            
            if(a[k][max]<=a[i][max] && k!=i)
                            {
                                flag
            =0;
                                
            break;
                            }
                        }
                        }
                         
            if(flag==1)
                        {
                            cout
            <<i<<" "<<max<<endl;
                            
            break;
                        }
                
                    }
                    
            if(flag==0)
                    {
                        cout
            <<"-1"<<" "<<"-1"<<endl;
                    }
                }
                
            return 0;
            }

            posted @ 2012-03-15 09:39 hoshelly 閱讀(728) | 評論 (0)編輯 收藏

            創建一個后綴名為txt的文件,并向該文件寫入一個字符串,保存起來,再打開文件,讀出文件中的內容。
            代碼如下:
            #include<stdio.h>
            #include
            <string.h>
            int main()
            {
                FILE 
            *fp;
                
            char pathName[20],txt1[100]={'\0'},txt2[20]={'\0'};
                
            int fileLen;
                printf(
            "Please type the path name of the file\n");
                scanf(
            "%s",pathName);
                fp
            =fopen(pathName,"w");
                printf(
            "Please input a string to this file\n");
                scanf(
            "%s",txt1);
                fileLen
            =strlen(txt1);
                fwrite(txt1,fileLen,
            1,fp);
                fclose(fp);
                printf(
            "The file has been saved\n");
                printf(
            "The content of teh file: %s is\n",pathName);
                fp
            =fopen(pathName,"r");
                fread(txt2,fileLen,
            1,fp);
                printf(
            "%s\n",txt2);
                
            return 0;
            }


            posted @ 2012-03-12 16:53 hoshelly 閱讀(182) | 評論 (0)編輯 收藏

            題目:
            有一批集裝箱要裝入一個載質量為C的貨船中,每個集裝箱的質量由用戶自己輸入指定,在貨船的裝載體積不限的前提下,如何裝載集裝箱才能盡可能多地的將集裝箱裝入貨船中。

            每次選取質量最小的箱子裝入船(用冒泡排序算法解決),代碼如下:
            #include<stdio.h>
            #include
            <stdlib.h>
            void sort(int w[],int t[],int n)//w[]存放每個集裝箱的質量,t[]存放w[]的下標
            {
                
            int i,j,tmp;
                
            int *w_tmp=(int *)malloc(sizeof(int)*n);//開辟一個臨時數組,存放w[]的內容,用于排序
                for(i=0;i<n;i++)
                    t[i]
            =i;//初始化數組t
                for(i=0;i<n;i++)
                    w_tmp[i]
            =w[i];
                
            for(i=0;i<n-1;i++)
                    
            for(j=0;j<n-i-1;j++)//冒泡排序實現
                        if(w_tmp[j]>w_tmp[j+1])
                        
            {
                            tmp
            =w_tmp[j];
                            w_tmp[j]
            =w_tmp[j+1];
                            w_tmp[j
            +1]=tmp;
                            tmp
            =t[j];
                            t[j]
            =t[j+1];
                            t[j
            +1]=tmp;
                        }

            }


            void loading(int x[],int w[],int c,int n)
            {
                
            int i,s=0;
                
            int *t=(int*)malloc(sizeof(int)*n);//動態開辟一個臨時數組,存放w[]的下標
                sort(w,t,n);
                
            for(i=0;i<n;i++)
                    x[i]
            =0;
                
            for(i=0;i<&& w[t[i]]<=c;i++){
                    x[t[i]]
            =1//將第t[i]個集裝箱裝入貨船中
                    c=c-w[t[i]]; //變量c中存放貨船的剩余載質量
                }

            }


            int main()
            {
                
            int x[5],w[5],c,i;
                printf(
            "Iput the maximum loading of the sheep\n");
                scanf(
            "%d",&c);
                printf(
            "Iput the weight of Five box\n");
                
            for(i=0;i<5;i++)
                    scanf(
            "%d",&w[i]);
                loading(x,w,c,
            5);
                printf(
            "The following boxes will be loaded\n");
                
            for(i=0;i<5;i++)
                
            {
                    
            if(x[i]==1)   printf("BOX:%d ",i);
                }

                
            return 0;
            }



            posted @ 2012-03-12 14:10 hoshelly 閱讀(667) | 評論 (0)編輯 收藏

            <html>
            <body>
            <?php
            $file
            =fopen("welcome.txt","r") or exit("Unable to open file!");//open "welcom.txt"file, 只讀方式
            while(!feof($file))//當還未達到文件的末端(EOF)時
            {
            echo fgets($file).
            "<br/>";//從文件中逐行讀取文件
            }
            if(feof($file)) echo "End of file";
            fclose($file);
            //關閉文件

            ?>
            </body>
            </html>

            //-----------------------------------------------------------------------------------------------------------------------------------------------------
            fopen只是“打開”一個文件,并保存為一個資源變量。 這個資源變量里面并不包括文件的內容。 如果只是想顯示文件內容,可用下面的語句: require_once "welcome.txt";
            另外還有一個函數:
            fgetc() 函數:用于從文件逐字符地讀取文件。 注釋:在調用該函數之后,文件指針會移動到下一個字符。

            posted @ 2012-03-08 22:48 hoshelly 閱讀(183) | 評論 (0)編輯 收藏

            點此下載此教程最新版本

            前言

              一直在網上逛,對PHP也有了所謂的了解。感慨于菜鳥入門時的艱辛(想偶當初光自己安裝就花了2個星期),特寫下此教程一篇,不敢托大,若能有所幫助則甚感欣慰。不當、不詳及不解之處萬望指正!

              補充:為了日后更新方便,此次安裝方式和原來的常規方式略有不同,不必進行移動DLL文件等操作,請特別注意。

              幾句廢話:關于PHP的介紹自不必多敘,相信各位已從各方面或多或少得知。網上也有很多的安裝教程,但不是 太舊不能順應發展變化,就是錯誤連連,讓新手無所適從。有朋友認為PHP的重點在編程上,服務器的配置可免則免,于是使用類似phptriad之類的合成 軟件或者JAVA做的安裝程序等。 這固然節省了一部分時間,但是錯過了入門的必要步驟,我認為對您今后的學習還是不利的。如果有時間和毅力,不妨往下繼續看。何況今天的這種安裝方式,在您 重裝系統后亦可在2分鐘內重新完成PHP的安裝配置。

            準備工作

            安裝平臺
            Win2003 Enterprise Server + IE 6.0.3790.0

               注:
            除win9x外,高版本windows下此配置方法應該均無問題(但沒有時間一個個測試,有問題可以聯系我)。

            使用軟件及版本
            PHP4.3.4
            Apache2.0.48
            MYSQL4.0.17
            Phpmyadmin2.5.6
            ZendOptimizer2.1.0b

              注:以上軟件均為Windows下的最新穩定版本。當您看到這篇教程時,也許各軟件版本早已更新,請自行調整測試。

            正式開始

              推薦更改以下所有軟件的默認安裝路徑,不要放在系統盤,理由在后面。此處我將安裝主目錄設在 G:\phpinstall\ ,本文下面的路徑也請改為相應路徑。

            安裝MYSQL數據庫

              這個比較簡單。將下載好的ZIP文件解壓縮,直接點一下里頭的setup.exe,一路NEXT即可(本人安裝路徑:G:\phpinstall\mysql)。
              然后請打開“我的電腦”,運行一下“C:\mysql\bin\winmysqladmin.exe”,初次運行可能會遇見如下界面,這個是讓你填寫MYSQL默認的用戶名和密碼,請按要求填寫(以后還可以修改)。接下來點擊“OK”之后可能會發現它不見了,別急,看看你的任務欄右下角,在這里呢! 那個可愛的紅綠燈,看見了沒有?如果顯示是綠燈,恭喜你,MYSQL服務已經啟動。如果是黃燈,請稍候一下。如果是紅燈,也請別急,右擊那個圖標,然后點 “WINNT==>Start the Server Standalone”,如果那個選項呈現灰色,請點“Start the Service”。其目的是重新啟動MYSQL服務。
               許多教程里談到用運行命令(cmd)來啟動,放著這么好的工具不用,其實何必呢?
               繼續,右擊,我們點“Show me”,然后出現了它的運行界面。點倒數第2個"Databases",查看默認數據庫是否已經存在(test及mysql),否則請仔細查看前面的過程,必要時重新安裝。
               而左邊第2項“Start Check”可以在您重新啟動系統(比較直接和偷懶的方法)或者重新啟動MYSQL服務(參見上述紅燈情況部分)后用來判斷是否正常。一般來說如下提示說明是正確的(均為OK)。否則也請自行重新啟動系統或服務。
               如果還不放心,試試這樣:運行“G:\phpinstall\mysql\bin\mysql.exe -u root -p”,正常的話應該出現一個類似DOS的窗口(如果出現讓您輸入密碼的窗口,直接回車即可,因為mysql初始安裝root密碼默認為空;如果是覆蓋安 裝MYSQL的話請輸入原來的那個root密碼)。然后輸入“show databases;”(別忘了分號),接下來如果出現兩個數據庫名稱(mysql和test),那現在已經可以很肯定的說,您的MYSQL已經完全配置 好了 :) 看看效果

            安裝Apache服務器

              其實安裝的過程很簡單,也是類似的一路“NEXT”就行了,這里就說明兩點:
              ①中間會出現一個界面,別怕,按如下窗口的提示寫即可,何況我們以后還可以修改這些信息。
              ②如果您要更改默認安裝路徑,注意Apache2.x會自動在路徑后面再加上一個"Apache2"文件夾。例如我把它安裝在“G:\phpinstall\Apache2\”下,中間更改路徑時只需要填寫或選擇"G:\phpinstall\"即可,如圖。
              安裝完了,你會發現右下角多了這么一個圖標,雙擊,發現這個界面.這是Apache2新增的一個非常實用的工具,在這里可以方便的控制Apache服務的開啟、關閉、重啟等操作,留給大家自行研究吧。
              現在請打開IE瀏覽器,在地址欄中敲入“http://127.0.0.1”,出現以下界面者,說明Apache的默認安裝是成功的。

            PHP的安裝

              將下載得到的PHP-4.3.4-win32.zip解壓縮到“G:\phpinstall\php”,請確保下面沒有類似“php- 4.3.4-win32”這樣的子文件夾,即壓縮包內所有的文件已經直接放到了PHP的安裝文件夾(“G:\phpinstall\php”)下。
              說到這里,不得不提一下PHP的兩種安裝方式。一種是CGI的安裝方式,另一種是模塊(modules)安裝方式,一般推薦后面一種,因為其擴充性比較好。下面就按照這種思路安裝。
              請將“G:\phpinstall\php\php4ts.dll”移入“G:\phpinstall\php\sapi”。最后將“G:\phpinstall\php\php.ini-dist”改名為“php.ini”后移到 Apache2 的安裝目錄“G:\phpinstall\Apache2”下(注意:移到系統目錄例如 C:\WINNT亦可,但這樣重裝系統后你又得重新配置PHP,這種移到Apache2目錄的方法可以省去該麻煩)。
              最后,在 G:\phpinstall\php 下新建兩個子目錄“session”和“includes”(理由?呵呵,別急,下面會說明)
              好了,PHP的安裝就這么簡單,是不是有點不可思議?

            Apache及PHP的配置(重點)

              配置PHP的一些屬性

              打開“G:\phpinstall\Apache2\php.ini”,搜索“doc_root”,“=”后面默認應該為空,你可以將它改為自 己的WWW網頁的默認位置,例如本人的機器上就是改為“doc_root = f:/www”(請使用斜杠"/"而非反斜杠"\")。
              繼續搜 索“extension_dir”,會得到“extension_dir = ./”一行,將它改為“extension_dir = G:/phpinstall/php/extensions”。然后搜索“;extension=”,會得到一大傳類似的連續行。這些是PHP的擴展模 塊,可以根據需要使用,對需要加入的模塊只需要去掉前面的分號即可。例如,“extension=php_gd.dll”、 “extension=php_imap.dll”、“extension=php_zip.dll”等。
               搜索一下“session.save_path”,找到“session.save_path = /tmp”一行,將后面的地址改為你自己機器上已經存在的目錄(這就是剛才建子目錄的用處,你不會想每次裝了PHP后都重新建一次吧?),這里使用 “G:\phpinstall\php\session”目錄,然后將這一行改為“session.save_path = G:/phpinstall/php/session”(Again,還是斜杠)。這個問題在很多教程中都沒有提到,而且一般SESSION在身份驗證、 購物車等時候才需要,所以初學者容易忽視。
              好了,保存一下,PHP的配置暫告一段落。

              配置Web服務器Apache

              依次展開“開始菜單==>程序==>Apache HTTP Server 2.0.48==>Configure Apache Server==>Edit the Apache httpd.conf Configuration File”,打開Apache的配置文件“httpd.conf”。
              搜索“#Listen”,找到“#Listen 12.34.56.78:80”一行,如果想讓Apache2只監聽某一該IP段,這里就需要去掉注釋,改成你需要的IP地址。例如,你只需要本機調試,不想讓外部訪問,那就改成 “Listen 127.0.0.1:80”,這樣一來,只能從你本機訪問(地址欄輸入 127.0.0.1 或者 localhost)才能看到Apache2的頁面?;蛘弋斈憔W卡綁定了兩個以上的IPe而只想用其中某一個時也可以考慮用這個方法。一般而言不必對此做太多修改。
               接下來搜索“#LoadModule”,又找到一大串連續的行。這些是Apache2為了解釋特定的語言而引入的模塊。請在后面加入新的一 行:“LoadModule php4_module G:/phpinstall/php/sapi/php4apache2.dll”以使Apache2加入對PHP的支持。
              然后在這一行的后面再加上(其實加在哪里都一樣,這樣只是為了便于以后糾錯):
                AddType application/x-httpd-php .php
                AddType application/x-httpd-php .php4
                AddType application/x-httpd-php .php3
                AddType application/x-httpd-php .phtml
                AddType application/x-httpd-php-source .phps
              上述幾行的用處是添加Apache支持和解釋的PHP后綴名。您一定可以想到,如果加入“AddType application/x-httpd-php .html”一行,那么直接把PHP文件存為html格式也不要緊,你的Apache還是會自己解釋的。
               (如果使用的是Apache1.x版本,還需做以下操作:搜索“AddModule”,還是找到一大串的連續行。在最后一行的下面加上“AddModule mod_php4.c”一行。本文使用的是2.x系列,所以毋需此步驟。
               最后需要更改的是默認WWW文件夾。搜索“DocumentRoot”,找到類似“DocumentRoot "G:/phpinstall/Apache2/htdocs" ”一行(隨Apache2安裝路徑而改變)。將它改為“DocumentRoot "f:/www" ”(記得上面PHP的配置嗎?對,同一個地方)。然后千萬不能忘了一點,就是還要改一處地方,就是在你剛找到“DocumentRoot”下面不遠的地方 (或者直接搜索“# This should be changed to whatever you set DocumentRoot to”就可以發現它的所在),將“<Directory "G:/phpinstall/Apache2/htdocs">”一行改為“<Directory "f:/www">”。
               如果需要增加虛擬目錄,請添加類似“ Alias /manual "G:/phpinstall/Apache2/htdocs/manual/" ”的行。其中“Alians”后面的那個斜杠后面對應的是虛擬目錄名,后面的是它的物理路徑。上面的地址就可以通過“http://127.0.0.1 /manual”來訪問。

              更改環境變量

              由于PHP在windows下運行時需要一些額外的DLL,所以需要用到“G:\phpinstall\php\dlls”下的那些文件。常規 方法是將這些文件放到“C:\WINDOWS\system32”下,但這樣一來每次重新裝都要如此,所以我使用環境變量來避免此問題。桌面右擊“我的電 腦”==>“屬性”==>“高級”==>“環境變量”==>“系統變量”==>找到“Path”一行,雙擊,在后面添加上 述目錄,注意記得在原先的環境變量后面加上分號以區分(即需要輸入“;G:\phpinstall\php\dlls”)

              好了,三大難點基本上搞定。為了能讓您有所參照,特地將自己的配置文件放了上來,以供參考。點此下載  

            程序調試階段

              這里要提醒一點,對Apache或PHP的設置做了更改后,需要重啟Apache以使其生效(以后類似,請自行注意)。具體如下:

              開始菜單=>程序=>Apache HTTP Server 2.0.48=>Control Apache Server=>Restart=> OK

              如果在這中間出現什么問題的話,請根據提示來檢查?,F在,我們來測試一下自己的安裝成果。

              在“F:\www”新建一個文本文件,輸入以下內容:
                 <?php
                 phpinfo();
                 ?>
              然后將它更名為“phpinfo.php”,保存。打開IE瀏覽器,運行“http://127.0.0.1/phpinfo.php”,如果出現類似這樣的網頁內容,恭喜,PHP已經基本上安裝好了。

              接下來要測試的是與MYSQL數據庫的連接。
               把下載得到的“phpMyAdmin-2.5.4-php.zip”解壓縮到“F:/www/phpmyadmin/”下,然后編輯 config.inc.php文件,搜索“$cfg['PmaAbsoluteUri']”一行,后面對應的是phpmyadmin的虛擬路徑,這里我們 把它改為“$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin/';”。
              繼續往 下,搜索“$cfg['Servers'][$i]['auth_type']”這一行,這個是phpmyadmin的身份驗證配置方式。這里我們選擇 “$cfg['Servers'][$i]['auth_type'] = 'config';”,下面兩行就是mysql的用戶名和密碼。默認的用戶名是“root”,密碼為空,別怕,我們呆會兒可以利用phpmyadmin修 改它。
              還是搜索,搜“$cfg['DefaultLang'] =”一行后面是它默認的語言,這里我們將它改為“$cfg['DefaultLang'] = 'zh';”,順便把下面10行左右的默認字符集“$cfg['DefaultCharset'] =”改為“$cfg['DefaultCharset'] = 'gb2312';”。
              在瀏覽器中輸入“http://127.0.0.1/phpmyadmin”,如果出現的界面如下,說明mysql已經連接成功了。phpmyadmin的其他功能就靠自己去摸索和實踐了。

            添加Zend引擎

              這個是所有安裝中最簡單的一步了。直接點下載得到的那個“ZendOptimizer-2.1.0b-Windows-i386.exe”。因 為我們的php.ini文件不在默認位置,中間需要指明它的位置(G:\phpinstall\Apache2)。它會自動備份原來的php.ini文件 為php.ini.optimizer-bak,安裝后需要重新啟動系統才能生效。重啟后請再次運行“http://127.0.0.1 /phpinfo.php”,看是否在其中出現如圖的畫面(往下拉,在中間部位),沒有的話,可要好好查查了。相信這個難不倒你,我就不多羅嗦了。成功后Apache就可以順利解釋有些用Zend加過密的PHP文件了。

            重要說明

              此次安裝與以往不同之處就在于php.ini的放置位置及dll文件的處理,因此,當您需要更新PHP版本時:請將新版本的PHP安裝文件放到以前的目錄并覆蓋舊文件(參考上述 PHP的安裝 部分,需要移動一個文件),而php.ini也需要重新編輯設定并移入Apache2安裝目錄(原來的php.ini文件設定可以參考,但不能繼續使用,否則可能會導致未知問題) ;或者重新安裝了系統后: 只要原來安裝目錄(G:\phpinstall)下的文件沒有改變,則只需覆蓋安裝MYSQL、Apache(過程參考上述步驟,安裝路徑要選擇原來 的),原來的配置和數據均不會被替換。然后重新設定一下PHP中DLL的環境變量即告成功!這也就是為何不要安裝在系統盤的原因所在。

            FAQ

            Q1出現圖中這個錯誤是什么意思?
            A1:意思很明顯了,沒有任何安裝的Apache2服務。要么您的系統是win9x,要么就是前面Apache2的安裝過程出了一點小小的問題,請重新安裝試試。

            Q1我提交表單的時候不會自動生成變量?
            A1:PHP4從4.2.0版本起,全局變量自動關閉。對于表單提交過來的變量,需要用特定的函數接受,具體如:

              $a=$_GET['var'];
              $b=$_POST['var'];

            如果需要自動生成變量,可以打開php.ini,找到 register_globals = Off 一行,改成 register_globals = On ,然后重啟Apache就可以了,但是從安全角度考慮,不推薦。

            一些編后感想

              其實PHP的安裝也不是很難,關鍵是要有耐心。而php.ini和httpd.conf這兩個關鍵的配置文件我也沒有全部談到。有些地方還是需 要自己去慢慢揣測和琢磨了。中間安裝過程也可能和我說的不完全一致,就要自己細心鉆研。怎么說呢,時間的付出和獲得的回報應該是成正比例的。相信各位也應 該會明白這個道理。

              事隔一年,更新此文,竟產生些許感觸。

              好了,開始您的PHP編程之旅吧,祝您好運!

            又及:在別人進入PHP世界初期需要幫忙的時候,請不吝伸出你的雙手幫助他們,謝謝。

            posted @ 2012-03-05 18:23 hoshelly 閱讀(124) | 評論 (0)編輯 收藏

            僅列出標題
            共12頁: First 4 5 6 7 8 9 10 11 12 
            久久夜色精品国产网站| 久久91这里精品国产2020| 国内精品伊人久久久久网站| 国产精品亚洲综合久久| 日日躁夜夜躁狠狠久久AV| 一级a性色生活片久久无| 亚洲av伊人久久综合密臀性色| 精品久久久久中文字幕日本| 久久国产精品波多野结衣AV| 99久久无码一区人妻| 国产亚洲精久久久久久无码77777| 久久精品九九亚洲精品| 久久久久久久综合日本| 久久久久人妻一区二区三区vr| 无码人妻久久一区二区三区免费丨 | 99精品国产在热久久| 久久精品成人| 亚洲午夜福利精品久久| 久久久久99这里有精品10 | 婷婷久久综合九色综合绿巨人| 亚洲精品白浆高清久久久久久| 亚洲精品乱码久久久久久| 久久人人爽人人爽人人AV | 国产午夜福利精品久久2021| 欧美久久综合性欧美| 久久一日本道色综合久久| 精品乱码久久久久久久| 国产精品久久久久久久午夜片| 精品久久久久久国产潘金莲| 青青国产成人久久91网| 无码精品久久一区二区三区| 一本色综合网久久| 99国产欧美精品久久久蜜芽| 久久综合成人网| 久久亚洲AV无码西西人体| 久久综合色老色| 91久久精品视频| 麻豆成人久久精品二区三区免费 | 久久人人爽人人爽人人片av高请| 精品久久久无码中文字幕| 热re99久久精品国99热|