久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

實驗一__Linux下C編程(樣例5)

時間:2019-05-11 23:21:48下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《實驗一__Linux下C編程》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《實驗一__Linux下C編程》。

第一篇:實驗一__Linux下C編程

實驗一 Linux下C編程

一. 實驗目的:

1. 熟練使用vi中的常見操作,并且熟悉vi的3種模式;

2. 熟練掌握gcc編譯命令及gdb的調試命令;通過對有問題程序的跟蹤調試,進一步提高發現問題和解決問題的能力;

3. 通過對包含文件的makefile的編寫,熟悉各種形式的makefile; 4. 通過使用autotools生成包含多文件的makefile。二. 實驗內容

1. 熟練使用vi(1)在“/root”目錄下建一個名為“vi”的目錄;(2)進入“vi”目錄;

(3)將文件“/etc/inittab”復制到“vi”目錄下;(4)使用vi打開“vi”目錄下inittab;

(5)設定行號,指出設定initdefault的所在行號;(6)將光標移到該行;(7)復制該行內容;

(8)將光標移到最后一行行首;(9)粘貼復制行的內容;(10)撤銷第9步操作;

(11)將光標移到最后一行行尾;(12)粘貼復制行的內容;

(13)光標移到“si::sysinit:/etc/rc.d/rc.sysinit”;(14)刪除該行;(15)存盤但不退出;(16)將光標移到行首;

(17)插入模式下輸入“Hello,this is vi world!”;(18)返回命令行模式;

(19)向下查找字符串“0:wait”;(20)向上查找字符串“halt”;(21)強制退出vi,不存盤。實驗步驟見書本P87 2. 用gdb調試程序中的bug(1)使用vi編輯器將一下代碼輸入到名為greet.c的文件中。此代碼的原意為輸出倒序main函數中定義的字符串,但結果顯示沒有輸出。代碼如下所示:(2)使用gcc編譯這段代碼,注意加上“-g”選項以方便之后的調試;(3)運行生成的可執行文件,觀察運行結果;

(4)使用gdb調試程序,通過設置斷點,單步跟蹤,一步步找出錯誤所在;(5)糾正錯誤,更改源程序并得到正確結果; 實驗步驟見書本P88

3. 編寫包含多文件的makefile(1)用vi在同一目錄下編輯兩個簡單的hello程序,如下所示:

#hello.c

#include “hello.c”

int main()

{

printf(“Hello everyone!n”);

}

#hello.h

#include

(2)仍在同一目錄下用vi編輯makefile文件,且不使用變量替換,用一個目標體實現,然后用make驗證所編寫的makefile是否正確;

(3)仍將上述makefile使用變量替換實現,同樣用make驗證所編寫的makefile是否正確;

(4)編輯另一個makefile,取名為makefile1,不使用變量替換,但用兩個目標體實現(首先將hello.c和hello.h編譯為hello.o,再將hello.o編譯為hello),再用make的“-f”選項驗證這個makefile的正確性;(5)將上述makefile1使用變量替換實現 實驗步驟見書本P90 4. 使用autotools生成包含多文件的makefile(1)在原目錄下新建文件夾auto(2)將上例中的兩個代碼文件“hello.c”和“hello.h”復制到該目錄下(3)使用autoscan生成configure.scan(4)編輯configure.scan,修改相關內容,并將其重命名為configure.in(5)使用aclocal生成aclocal.m4(6)使用autoconf生成configure(7)使用autoheader生成config.h.in(8)編輯makefile.am(9)使用automake生成makefile.in(10)使用configure生成makefile(11)使用make生成hello可執行文件,并在當前目錄下運行hello查看結果(12)使用make install將hello安裝到系統目錄下,并運行,查看結果(13)使用make dist生成hello壓縮包(14)解壓hello壓縮包(15)進入解壓目錄

(16)在該目錄下安裝hello軟件 實驗步驟見書本P91 三. 實驗結果截圖

1.實驗一截圖

Linux下的簡單的運用:

圖一 對inittab文件做完處理后的文件結果:

圖二

圖三

2.實驗二截圖

第一遍運行greet.c的結果:

圖四 用gdb調試的過程:

圖五

圖六

圖七

圖八

圖九

3.實驗三截圖 第一次運行的結果

圖十 第一次運行makefile的結果:

圖十一 第二次運行makefile的結果:

圖十二 第一次運行makefile1的運行結果:

圖十三 第二次運行makefile的運行結果:

圖十四 四. 實驗心得體會

1.對于實驗一:

復習了linux 下面對于文件編輯的一些知識。

2.對于實驗二:

學會了gdb調試的簡單運用:gdb l()-查看源代碼;gdb b()-設置斷點;gdb info b-查看斷點情況;gdb r-運行代碼; gdb n-單步運行代碼; gdb p()-查看;gdb c-繼續運行; gab q-退出;對于以后代碼的改錯很有幫助。

3.對于實驗三:

實驗三是我做的最不開心的一個了,開始在運行makefile,不管怎么樣都是錯的,可是檢查卻沒有任何錯誤,后來想起來以前做makefile的時候要用tab鍵縮進的,這樣之后發現就可以了。這個實驗雖然讓我很煩,但是想起了以前學liunx的好多東西,幫助很大,也覺得以前知識要常復習,這樣才不容易忘。

第二篇:實驗三_LINUX的C語言編程

實驗三 LINUX的C語言編程

要求:

1、請查閱資料,掌握vi編輯器的基本使用,包括兩種不同模式的區別,如何在兩種模式之間切換,以及常用的編輯命令等;

2、使用vi編寫一個c程序,要求該程序通過命令行接收用戶的輸入,其輸入參數為FreeBSD系統中的任意文本文件,接收輸入后,c程序讀取該文件內容,并打印在屏幕上。編輯好后,存為.c文件(如a.c),使用gcc編譯該文件,運行結果文件。

3、詳細記錄學習的內容和實驗的整個過程,包括用到的vi命令,c程序源代碼,gcc命令,以及執行結果文件的命令等;

4、對整個實驗過程進行分析總結,給出詳細步驟;

一:vi編輯器的使用

vi 的兩種命令模式;

Command(命令)模式,用于輸入命令; Insert(插入)模式,用于插入文本;

Visual(可視)模式,用于視化的的高亮并選定正文;

Command 模式是vi或vim的默認模式,如果我們處于其它命令模式時,要通過ESC鍵切換過來。

當我們按ESC鍵后,接著再輸入:號時,vi會在屏幕的最下方等待我們輸入命令; 文件的保存和退出 :w 保存;

:w filename 另存為filename; :wq!保存退出;

:wq!filename 注:以filename為文件名保存后退出; :q!不保存退出;

:x 應該是保存并退出,功能和:wq!相同 光標移動

j 向下移動一行; k 向上移動一行; h 向左移動一個字符; l 向右移動一個字符;

插入模式(文本的插入)i 在光標之前插入; a 在光標之后插入;

I 在光標所在行的行首插入; A 在光標所在行的行末插入;

o 在光標所在的行的上面插入一行; O 在光標所在的行的下面插入一行;

s 刪除光標后的一個字符,然后進入插入模式; S 刪除光標所在的行,然后進入插入模式; 文本內容的刪除操作 x 一個字符;

#x 刪除幾個字符,#表示數字,比如3x; dw 刪除一個單詞;

#dw 刪除幾個單詞,#用數字表示,比如3dw表示刪除三個單詞; dd 刪除一行;

#dd 刪除多個行,#代表數字,比如3dd 表示刪除光標行及光標的下兩行; 恢復修改及恢復刪除操作; u 撤消修改或刪除操作;

查找

/SEARCH 注:正向查找,按n鍵把光標移動到下一個符合條件的地方; ?SEARCH 注:反向查找,按shift+n 鍵,把光標移動到下一個符合條件的 替換

:s /SEARCH/REPLACE/g 注:把當前光標所處的行中的SEARCH單詞,替換成REPLACE,并把所有SEARCH高亮顯示;

:%s /SEARCH/REPLACE 注:把文檔中所有SEARCH替換成REPLACE;

:#,# s /SEARCH/REPLACE/g 注:#號表示數字,表示從多少行到多少行,把SEARCH替換成REPLACE;

二:編寫程序和編譯程序

先在home文件夾下建立test文件夾,用于自己的程序開發。

根據題目要求編寫相應程序:

編寫完程序后保存。

使用gcc命令編譯時發現如下問題:

后來上網查找后發現FreeBSD默認不再使用GCC構建,使用Clang/LIVM替代GCC作為默認的C/C++編譯器。

于是使用clang命令進行編譯如下:

得到輸出文件后,再新建一個test.txt文件用于測試。然后執行可執行文件:./a.out

由上可以看出,在執行編譯命令后我并沒有指定輸出文件的類型和名稱,a.out為默認輸出的名稱和類型,可以使用clang a.c –o test來生成不同類型和名稱的輸出文件。另外看到提示是輸入文件的路徑,如果是當前文件下的文件,則可以只輸入文件的相對路徑,如果在別的文件夾下則需要輸入文件的絕對路徑。如使用#cp /home/test/test.txt /home/test2.txt復制一個文件到別的目錄后讀取。測試如下:

三:程序源代碼

#include int main(){ FILE *file;//定義文件指針

char path[20];//文件路徑字符串

char msg[100];//讀入數據緩存區

printf(“please enter the path of your filern”);//輸出提示

scanf(“%s”,path);//獲取文件路徑

file = fopen(path);//打開文件

while(fgets(msg,sizeof(masg)-1,file)!=NULL)//逐行讀取文件 直到文件末 { printf(“%s”,msg);//輸出讀取到的文件內容 } fclose(file);//關閉文件 return 0;//返回 } 四:實驗總結和分析

本次實驗首次使用vi編輯器編寫了一段代碼,并成功的編譯并運行。首先說一下vi編輯器的使用感受,和window不太一樣,它有不同的模式,只有在特定的模式下才能執行相應的命令或者操作。而且我發現了另一個很好用的ee編輯器,使用這個編輯器可以很方便的進行文件的操作,主要是它有很豐富的提示。但是為什么vi編輯器是大家常談的呢?主要是vi編輯器體積小巧,功能強大,雖然在大的系統工程方面不太好用,但是正常的使用來說還是足夠的,幾乎所有的類似操作系統都會裝有這一編輯器,學會vi編輯器的使用可以使自己在沒有別的編輯器的情況下還能進行文件的編輯和系統的配置。這樣對于日后的開發有很大的好處。另外在發現FreeBSD中沒有安裝gcc時,我嘗試過給器安裝一個gcc編輯器,但是卻失敗了,截圖如下(圖1),希望通過后面的學習安裝上去。

圖1:安裝gcc編譯器失敗

另外我又進行了多文件結構的和多控制臺的測試。就是通過多個控制臺分別編寫多個文件,最后統編譯鏈接成一個可執行文件,這樣可以大致模仿出ADE的編輯環境,進行多個文件的編寫。

第三篇:實驗二語言與C語言混合編程

實驗二匯編語言與C語言混合編程

一、教學目的和要求

?

? 熟悉ADS1.2開發環境編譯、下載、調試程序的基本過程; 掌握C和匯編語言混合編程方法。

掌握ATPCS中的寄存器及參數傳遞規則。?

二、實驗內容

1、分別編寫C程序和匯編程序,要求在C程序中調用匯編程序實現字符串拷貝功能。C程序中設定源字符串及目的字符串;匯編程序實現拷貝功能。

2、分別編寫C程序和匯編程序,要求在匯編程序中調用C程序實現4個整型數的求和運算。匯編程序實現變量的賦值及C函數的調用;C程序實現求和運算。

3、編寫C程序內嵌匯編語句,對兩個整型數a、b進行求和運算,和值存放到變量c中。

(1)要求main()函數完成變量賦值及a、b、c數值信息輸出;內嵌匯編語句實現求和計算。

(2)要求C程序中main()函數完成變量賦值及a、b、c信息打印,add()函數實現加法

運算;main()函數中的內嵌匯編調用C函數add()進行求和運算。

三、思考題

1、什么是ATPCS?它有哪些規則?

2、C程序調用匯編程序需要進行哪些設置?參數如何傳遞?

3、匯編程序調用C程序需要進行哪些設置?參數如何傳遞?

4、C程序中內嵌的匯編語句有何限制?用什么關鍵字表示內嵌匯編?

第四篇:C語言編程

#include(stdio.h)

main()

{ int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0};

char again='y';

while(again=='y'){ srand((int)time(0));

while(i4){ k=(int)rand()%10;

for(j=0;ji;j++)if(k==question[j]){ k=-1;break;}

if(k==-1)continue;question[i]=k;i++;}/*while i*/

for(i=8;i0;i--)/*還有8次機會*/

{ A=0;B=0;printf(“n你還剩下%d次機會。”,i);

printf(“n請輸入四個0-9之間的數字,中間用空格隔開n”);for(j=0;j4;j++)scanf(“%d”,&answer[j]);

for(j=0;j4;j++)

for(k=0;k4;k++)

{ if(answer[j]==question[k]){ if(j==k)A++;else B++;} }/*for*/

if(A==4){ again='0';

printf(“n你贏了,還繼續猜嗎?(y/n)”);

while(again!='y'&&again!='n')

scanf(“...%c”,&again);break;}/*if*/

printf(“n%dA%dB”,A,B);if(i==1){ again='0';

printf(“n你輸了,正確答案是”);

for(j=0;j4;j++)

printf(“%dt”,question[j]);

printf(“n還繼續嗎?(y/n)”);

while(again!='y'&&again!='n')scanf(“%c”,&again);

printf(“%c”,again);break;}/*if*/ }/*for changce*/ }/*while again*/ printf(“感謝您玩這個游戲。”);}

第五篇:實驗四 Linux下的C語言編程以及GCC工具的使用

實驗四 Linux下的C語言編程以及GCC工具的使用

【實驗目的】了解Linux下的用戶管理機制,熟練掌握Linux下的C語言編程以及GCC工具的使用。

【預備知識】復習C/C++語言的基本技能、用戶管理知識和GCC使用的內容。

【實驗要求】Linux系統管理的一項重要工作就是用戶管理。用戶的口令以加密的形式存儲在/etc/shadow文件中.弱口令就是很容易被猜出來的口令,比如與用戶名相同的口令、常用的單詞口令等。管理員應該定期檢測系統中是否存在弱口令。試編寫一個C語言程序,主動檢查自己的Linux系統中是否存在弱口令。

【實驗步驟】

1)分析/etc/shadow文件的格式。可以查看自己的系統中該文件的格式,根據8.1節的介紹,該文件的每一行對應一個用戶,下面是一個系統中/etc/shadow文件的實例:root:$1$j33ff543SWQ/C7Swn6jR9xyfoEcLaS.:12912:0:99999:7:::bin:*:12834:0:99999:7:::

daemon:*:12834:0:99999:7:::

2)了解Linux下口令加密的原理。

口令的加密是使用Linux系統的crypt函數實現的。使用info或者man可以了解該命令的工作原理。它使用包含12個字符的字符串作為種子salt,將用戶輸入的口令key進行加密pwd=crypt(key.salt),將所得的包含34個字符的字符串存入,etc,shadow文件的第2個字段,這34個字符的前12個就是salt。當給用戶設置口令時,種子是由系統隨機選取的。

當用戶在登錄界面中輸入自己的口令時,系統使用crypt進行上述計算,如果所得的結果與/etc/shadow中存儲的一致,則允許用戶登錄。

3)檢查弱口令。弱口令就是很容易被猜出來的口令。比如admin、guest、fllower、123456、beauty等。在口令猜測或者破解時,一般不會窮盡所有字符的所有排列組合,一般使用弱口令字典,字典中包含常被用來作為口令的字符串。可以到網上查找弱口令字典。

下面介紹弱口令檢查的原理。對每個用戶而言,逐個將經常被作為口令的詞,使用crypt做加密,如果加密結果與/etc/shadow所存儲的內容相同,則口令被猜出來。

4)用C語言編寫實現口令檢查,關鍵部分的代碼如下。通過讀取,etc/shadow的每一行,獲得一個關于

用戶的數據結構,存放在pwd中。

char saltstr[13];//存放種子

saltstr[13]=’\0’;

strncpy(saltstr,pwd->pw_passwd,12);//將口令的前12個字符作為種子 cp=crypt(guess,saltstr);//加密

if(strncmp(cp,pwd->pw_passwd,34))//與存儲的不一致

return(0);

Printf(“Warninq!Password Problem:Guessed:\t%s\tpasswd:%s\n”,pwd->pw-name,guess);//找到口令,顯示信息

5)編譯運行,命令為:

gcc-o passchk pass.c-Icrypt

6)執行口令檢查程序。

下載實驗一__Linux下C編程(樣例5)word格式文檔
下載實驗一__Linux下C編程(樣例5).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    實驗3 關系運算設計(c語言編程)(定稿)

    實驗3 關系運算設計 一、實驗目的 熟悉笛卡兒積、關系復合運算、關系的自反閉包、對稱閉包和傳遞閉包的概念,并編程設計求其運算。 二、實驗內容 1.由用戶輸入兩個集合A和B,......

    《C專家編程》總結

    《C專家編程》總結 開始讀《C專家編程》之前,有一個很擔心的問題:94年出的講語言的書,在現在(2012)還有多少是適用的。因此,一邊讀,一邊用VS2010做實驗。最后發現大部分內容都還......

    C語言經典編程題(推薦)

    C語言經典編程題 題目01:在一個已知的字符串中查找最長單詞,假定字符串中只含字母和空格,空格用來分隔不同的單詞。 [cpp] view plain copy print? 1. 2. 3. 4. 5. 6. 7. 8. 9.......

    經典C語言編程100例

    經典C語言編程100例(1-30) 【程序1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。......

    c語言編程練習

    本實驗所有題目均要求使用指針。 1.寫一函數,將一個3*3的整型矩陣轉置。2.將兩個按升序排列的數組合并成一個數組,并使合并后的數組也按升序排列。 要求: (1)輸入兩個數組(按升序);......

    C語言編程100題

    經典C語言程序設計100例 【程序1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組......

    socket編程實驗心得體會

    實驗心得體會 在本次實驗中,我通過對網絡課上所學知識的應用,學到了很多實踐中的知識。并且加深了我對課本知識的理解和認識,在實驗過程中,更容易記憶和深入理解各種協議的工作......

    實驗三GUI編程

    實驗三GUI編程 一、實驗目的: 1、了解Java系統圖形用戶界面的基本工作原理和界面設計的步驟 2、了解圖形用戶界面的事件響應機制. 3、掌握圖形用戶界面各種常用的基本組件的......

主站蜘蛛池模板: 国产偷国产偷亚洲清高app| 亚洲熟妇av乱码在线观看| 精品国产综合区久久久久久| 国产精品一品二区三区的使用体验| 久久久久人妻一区精品色| 久久久精品2020免费观看| 日韩精品人妻系列无码专区| 午夜福到在线a国产4 视频| 无码囯产精品一区二区免费| 免费看国产曰批40分钟| 亚洲综合在线另类色区奇米| 夜精品一区二区无码a片| 无套内谢少妇毛片aaaa片免费| 国产黑色丝袜在线观看片不卡顿| 国产精品久久精品国产| 国产成人香蕉久久久久| 亚洲午夜精品久久久久久APP| 国产99久久精品一区二区| 日本高清色倩视频在线观看| 无码人妻久久一区二区三区| 亚洲情综合五月天| 国产精品成人国产乱| 国产美女精品视频线免费播放软件| 精品无码久久久久久久久水蜜桃| 久久久无码精品一区二区三区| 色老大久久综合网天天| av无码欧洲亚洲电影网| 亚洲av日韩综合一区在线观看| 久久久综合九色综合88| 中文字幕日产无码| 中文字幕亚洲男人的天堂网络| 婷婷色爱区综合五月激情韩国| 亚洲电影在线观看| 亚洲一区二区观看播放| 国产中文字字幕乱码无限| 久久久精品人妻无码专区不卡| 少妇爆乳无码av无码波霸| 中文字幕乱码熟女人妻水蜜桃| 狠狠综合亚洲综合亚洲色| 人妻人人澡人人添人人爽| 国内精品视频一区二区三区八戒|