亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Linux C語言編程基本原理與實踐

難度初級
時長 2小時 0分
學習人數
綜合評分9.60
350人評價 查看評價
9.8 內容實用
9.6 簡潔易懂
9.4 邏輯清晰
  • 標準流,重定向

    查看全部
  • 標準輸入流輸出流以及錯誤流

    查看全部
  • argv :? 代碼的個數

    argc[] :? 代碼是啥

    查看全部
  • vim分為三種模式

    一般模式:以vim打開或新建一個文件就可以直接進入一般模式,在此模式中,你可以使用上下左右來進行光標的移動,可以刪除字符或整行,可以復制粘貼文件數據。

    編輯模式:顧名思義,就是可以編輯文本的模式,在一般模式下,按下“i,I,o,O,a,A,r,R”這些字母可進入編輯模式,進入編輯模式后在左下方會有INSERT或REPLACE的字樣。

    在編輯模式下按下ESC鍵會退出到一般模式下。

    命令行模式:在一般模式下,輸入” :, / , ? “這三個字符中的任意一個會將光標移動到當前頁面最下面的一行,在這個模式中可以進行數據查找、替換、保存、離開vim等操作。

    使用vim filename可進入vim一般模式:

    一般模式下熱鍵說明:

    移動光標的方法

    h?或?向左箭頭鍵(←)光標向左移動一個字符

    j?或?向下箭頭鍵(↓)光標向下移動一個字符

    k?或?向上箭頭鍵(↑)光標向上移動一個字符

    l?或?向右箭頭鍵(→)光標向右移動一個字符

    如果你將右手放在鍵盤上的話,你會發現?hjkl?是排列在一起的,因此可以使用這四個按鈕來移動光標。?如果想要進行多次移動的話,例如向下移動?30?行,可以使用?“30j”?或?“30↓”?的組合按鍵,?亦即加上想要進行的次數(數字)后,按下動作即可!

    [Ctrl] + [f]屏幕『向下』移動一頁,相當于?[Page Down]按鍵?(常用)

    [Ctrl] +屏幕『向上』移動一頁,相當于?[Page Up]?按鍵?(常用)

    [Ctrl] + [d]屏幕『向下』移動半頁

    [Ctrl] +屏幕『向上』移動半頁

    +光標移動到非空格符的下一列

    –光標移動到非空格符的上一列

    n那個?n?表示『數字』,例如?20?。按下數字后再按空格鍵,光標會向右移動這一行的?n?個字符。例如?20?則光標會向后面移動?20?個字符距離。

    0?或功能鍵[Home]這是數字『?0?』:移動到這一行的最前面字符處?(常用)

    $?或功能鍵[End]移動到這一行的最后面字符處(常用)

    H光標移動到這個屏幕的最上方那一行的第一個字符

    M光標移動到這個屏幕的中央那一行的第一個字符

    L光標移動到這個屏幕的最下方那一行的第一個字符

    G移動到這個檔案的最后一行(常用)

    nGn?為數字。移動到這個檔案的第?n?行。例如?20G?則會移動到這個檔案的第?20?行(可配合?:set nu)

    gg移動到這個檔案的第一行,相當于?1G?啊!?(常用)

    nn?為數字。光標向下移動?n?行(常用)

    搜尋與取代

    /word向光標之下尋找一個名稱為?word?的字符串。例如要在檔案內搜尋vbird?這個字符串,就輸入?/vbird?即可!?(常用)

    ?word向光標之上尋找一個字符串名稱為?word?的字符串。

    n這個?n?是英文按鍵。代表『重復前一個搜尋的動作』。舉例來說,如果剛剛我們執行?/vbird?去向下搜尋?vbird?這個字符串,則按下?n?后,會向下繼續搜尋下一個名稱為?vbird?的字符串。如果是執行??vbird?的話,那么按下?n?則會向上繼續搜尋名稱為?vbird?的字符串!

    N這個?N?是英文按鍵。與?n?剛好相反,為『反向』進行前一個搜尋動作。?例如?/vbird?后,按下?N?則表示『向上』搜尋?vbird?。

    使用?/word?配合?n?及?N?是非常有幫助的!可以讓你重復的找到一些你搜尋的關鍵詞!

    :n1,n2s/word1/word2/gn1?與?n2?為數字。在第?n1?與?n2?行之間尋找?word1?這個字符串,并將該字符串取代為?word2?!舉例來說,在?100?到?200?行之間搜尋?vbird?并取代為?VBIRD?則:『:100,200s/vbird/VBIRD/g』。(常用)

    :1,$s/word1/word2/g從第一行到最后一行尋找?word1?字符串,并將該字符串取代為word2?!(常用)

    :1,$s/word1/word2/gc從第一行到最后一行尋找?word1?字符串,并將該字符串取代為word2?!且在取代前顯示提示字符給用戶確認?(confirm)?是否需要取代!(常用)

    刪除、復制與貼上

    x, X在一行字當中,x?為向后刪除一個字符?(相當于?[del]?按鍵),?X?為向前刪除一個字符(相當于?[backspace]?亦即是退格鍵) (常用)

    nxn?為數字,連續向后刪除?n?個字符。舉例來說,我要連續刪除?10?個字符,?『10x』。

    dd刪除游標所在的那一整列(常用)

    nddn?為數字。刪除光標所在的向下?n?列,例如?20dd?則是刪除?20?列(常用)

    d1G刪除光標所在到第一行的所有數據

    dG刪除光標所在到最后一行的所有數據

    d$刪除游標所在處,到該行的最后一個字符

    d0那個是數字的?0?,刪除游標所在處,到該行的最前面一個字符

    yy復制游標所在的那一行(常用)

    nyyn?為數字。復制光標所在的向下?n?列,例如?20yy?則是復制?20?列(常用)

    y1G復制游標所在列到第一列的所有數據

    yG復制游標所在列到最后一列的所有數據

    y0復制光標所在的那個字符到該行行首的所有數據

    y$復制光標所在的那個字符到該行行尾的所有數據

    p, Pp?為將已復制的數據在光標下一行貼上,P?則為貼在游標上一行!舉例來說,我目前光標在第?20?行,且已經復制了?10?行數據。則按下?p?后,?那?10?行數據會貼在原本的?20?行之后,亦即由?21?行開始貼。但如果是按下?P?呢??那么原本的第?20?行會被推到變成?30?行。?(常用)

    J將光標所在列與下一列的數據結合成同一列

    c重復刪除多個數據,例如向下刪除?10?行,[ 10cj ]

    u復原前一個動作。(常用)

    [Ctrl]+r重做上一個動作。(常用)

    這個?u?與?[Ctrl]+r?是很常用的指令!一個是復原,另一個則是重做一次~?利用這兩個功能按鍵,你的編輯,嘿嘿!很快樂的啦!

    .不要懷疑!這就是小數點!意思是重復前一個動作的意思。?如果你想要重復刪除、重復貼上等等動作,按下小數點『.』就好了!?(常用)


    一般模式進入編輯模式的按鍵說明:?

    i, I進入插入模式(Insert mode):

    i?

    為『從目前光標所在處插入』,?I?為『在目前所在行的第一個非空格符處開始插入』。?(常用)

    a, A進入插入模式(Insert mode):

    a?

    為『從目前光標所在的下一個字符處開始插入』,?A?為『從光標所在行的最后一個字符處開始插入』。(常用)

    o, O進入插入模式(Insert mode):這是英文字母?o?的大小寫。o?為『在目前光標所在的下一行處插入新的一行』;?O?為在目前光標所在處的上一行插入新的一行!(常用)

    r, R進入取代模式(Replace mode):

    r?

    只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下?ESC?為止;(常用)

    上面這些按鍵中,在?vim?畫面的左下角處會出現『–INSERT–』或『–REPLACE–』的字樣。?由名稱就知道該動作了吧?。√貏e注意的是,我們上面也提過了,你想要在檔案里面輸入字符時,?一定要在左下角處看到?INSERT?或?REPLACE?才能輸入喔!

    [Esc]退出編輯模式,回到一般模式中(常用)

    一般模式切換到命令行模式的按鍵說明:

    :w將編輯的數據寫入硬盤檔案中(常用)

    :w!若文件屬性為『只讀』時,強制寫入該檔案。不過,到底能不能寫入,?取決于當前用戶對于文件的權限,一般情況下文件的所有者以及root用戶的權限較大。

    :q離開?vim (常用)

    :q!若曾修改過檔案,又不想儲存,使用?!?為強制離開不儲存檔案。

    注意一下啊,那個驚嘆號?(!)?在?vim?當中,常常具有『強制』的意思~

    :wq儲存后離開,若為?:wq!?則為強制儲存后離開?(常用)

    ZZ這是大寫的?Z?喔!若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存后離開!

    :w [filename]將編輯的數據儲存成另一個檔案(類似另存新檔)

    :r [filename]在編輯的數據中,讀入另一個檔案的數據。亦即將?『filename』?這個檔案內容加到游標所在行后面

    :n1,n2 w [filename]將?n1?到?n2?的內容儲存成?filename?這個檔案。

    :! command暫時離開?vim?到指令列模式下執行?command?的顯示結果!例如『:! ls /home』即可在?vim?當中察看?/home?底下以?ls?輸出的檔案信息!

    vim?環境的變更

    :set nu顯示行號,設定之后,會在每一行的前綴顯示該行的行號

    :set nonu與?set nu?相反,為取消行號!



    作者:vic_wei7
    鏈接:https://www.jianshu.com/p/581dcdc05277
    來源:簡書
    著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


    查看全部
  • gcc? max.c hello.c -o main.out

    #include "max.c"

    int main(){? max(a,b);}


    查看全部
  • 我們現在寫一個程序avg.c,求任意個數的平均值:

    #include <stdio.h>

    int main()

    {

    ? ? ? ? int s,n;

    ? ? ? ? scanf("%d,%d",&s,&n);

    ? ? ? ? float v=s/n;

    ? ? ? ? printf("v=%f\n",v);

    ? ? ? ? return 0;

    }

    退出vim進行編譯cc avg.c -o avg.out,我們得到avg.out,我們輸入3000,3。

    ?我們再寫一個統計輸入的程序input.c:

    #include <stdio.h>

    int main()

    {

    ? ? ? ? int flag=1;

    ? ? ? ? int i;

    ? ? ? ? int count=0;

    ? ? ? ? int s=0;

    ? ? ? ? while(flag){

    ? ? ? ? ? ? scanf("%d",&i);

    ? ? ? ? ? ? if(0==i) break;

    ? ? ? ? ? ? count++;

    ? ? ? ? ? ? s+=i;

    ? ? ? ? }

    ? ? ? ? printf("%d,%d",s,count);

    ? ? ? ? return 0;

    }

    我們對這個函數進行編譯cc input.c -o input.out,我們輸入3000 3000 0,輸出總工資6000和人數2人

    我們使用以上兩個程序結合起來,將所有數據進行統計input.out,之后通過管道經過avg.out計算平均值,命令可以寫為./input.out | ./avg.out,然后進行輸入,輸入完成我們便得到了對應的平均工資。 以上就是通過管道,將兩個小程序連接起來得到更復雜的程序的過程


    查看全部
  • 我們現在寫一個程序avg.c,求任意個數的平均值:

    #include <stdio.h>

    int main()

    {

    ? ? ? ? int s,n;

    ? ? ? ? scanf("%d,%d",&s,&n);

    ? ? ? ? float v=s/n;

    ? ? ? ? printf("v=%f\n",v);

    ? ? ? ? return 0;

    }

    退出vim進行編譯cc avg.c -o avg.out,我們得到avg.out,我們輸入3000,3。

    ?我們再寫一個統計輸入的程序input.c:

    #include <stdio.h>

    int main()

    {

    ? ? ? ? int flag=1;

    ? ? ? ? int i;

    ? ? ? ? int count=0;

    ? ? ? ? int s=0;

    ? ? ? ? while(flag){

    ? ? ? ? ? ? scanf("%d",&i);

    ? ? ? ? ? ? if(0==i) break;

    ? ? ? ? ? ? count++;

    ? ? ? ? ? ? s+=i;

    ? ? ? ? }

    ? ? ? ? printf("%d,%d",s,count);

    ? ? ? ? return 0;

    }

    我們對這個函數進行編譯cc input.c -o input.out,我們輸入3000 3000 0,輸出總工資6000和人數2人

    我們使用以上兩個程序結合起來,將所有數據進行統計input.out,之后通過管道經過avg.out計算平均值,命令可以寫為./input.out | ./avg.out,然后進行輸入,輸入完成我們便得到了對應的平均工資。 以上就是通過管道,將兩個小程序連接起來得到更復雜的程序的過程


    查看全部
  • 管道:|

    查看根目錄: ls /

    查看Linux默認配置目錄: ls /etc/

    將etc文件輸出到一個管道:ls /etc/ | grep 關鍵字符

    (如:ls /etc/ | grep ab:要查找某個目錄下有多少個文件名包含"ab")

    “|”是文件輸出到grep,作為grep的輸入,在Linux中作為管道,用于連接在兩個獨立的小程序建立通道,比如將“ls”的輸出結果傳給“grep”的輸入

    grep是C語言的小程序,可以查詢包含指定字符的文件

    查看當前進程的文件:ps(查看進程的命令) -e

    (如:ps -e | grep ssh ?查看目前有多少含有ssh的進程應用)


    查看全部
  • “|”在Linux中作為管道,用于連接在兩個獨立的小程序建立通道,比如將“ls”的輸出結果傳給“grep”的輸入

    grep是C語言的小程序,可以查詢包含指定字符的文件

    ps -e查看當前在運行的進程


    查看全部
  • 標準輸入流 ---> 鍵盤輸入

    標準輸出流 --> 終端輸出

    標準錯誤流 --> 錯誤輸出

    重定向機制

    >>重定向到該文件,無覆蓋

    >重定向到該文件,最新

    <重定向輸入文件

    1>正確結果導入 2>錯誤結果導入


    查看全部
  • stdin 標準輸入流 鍵盤

    stdout標準輸出流 顯示器

    stderr標準錯誤流

    printf是對fprintf的封裝

    fprintf(stdout, ?);

    scanf是對fscanf的封裝

    fscanf(stdin,"%d",&a);

    fprintf(stderr," ");


    查看全部
  • #include<stdio.h>

    int?main(int?argv,char*?argc[]){

    ??printf("argv?is?%d\n",argv);?

    ? int?i;

    ? for(i=0;i<argv;i++){

    ??printf("argc[%d]is?%s\n",i,argc[i]);?

    ? }

    ??return?0;

    }


    main 函數中 argv參數 表示執行該程序時 輸入的有效項(程序名+參數)個數;

    ???????????????? argc[] 參數 表示執行該程序時輸入的有效項內容(程序名, 參數);

    main 中 argv 和 argc 的作用:

    ?? ?argv 表示參數的個數;

    ?? ?argc 存放參數的內容;

    查看全部

  • 輸出重定向:> 和 >>? ? ? ? ? ? ? ? ? ? ? ? ? >表示覆蓋,>>表示追加?

    輸入重定向:<

    ./a.out >> a.txt

    ?>> 追加內容

    > 單箭頭 不覆蓋,保持最新

    ./aout < input.txt 輸入流

    輸出流、錯誤流、輸入流

    ./a.out 1>t.txt 2>f.txt <input.txt


    查看全部
  • stdin輸入流

    stdout輸出流

    stderr錯誤流


    查看全部
  • ls -l -a:詳細顯示隱藏內容

    cp 文件名 文件名 拷貝

    \n換行

    查看全部

舉報

0/150
提交
取消
課程須知
本課程為C語言中級課程 學習本課程需要了解C語言以下基本語法:變量、常量、順序、循環、分支、函數等。
老師告訴你能學到什么?
如何在真正的商業環境(Linux)下編寫C語言程序 如何編譯一個項目以及makefile如何編寫 C語言真正的本領(制作小工具) 多個c語言小工具如何構成強大的軟件系統

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!