原创 fopen與fclose詳解

fopen()打開一個文件函數原型:FILE *fopen(const char *path, const char *mode);path字符串是一個文件名mode是打開文件的方式具體有如下幾種方式:r 以只讀方式打開文件,該文件必須存

原创 數據結構—棧的實現(順序表)

數據結構中的棧有“後進先出”的特點,意思是最後被存進棧中的數據,總是最早被取走一個棧只有初始化,銷燬,入棧,出棧和取棧頂元素,這些限制往往使在操作數據時更安全,代碼容易實現,出現BUG的機會就很少上圖中,棧中有3個元素,棧頂元素是data

原创 sscanf與sprintf詳解

sscanf與sprintf需要引入stdio.h頭文件sscanf();函數原型:int sscanf(const char *str, const char *format, ...);返回值爲format中的字符個數#include

原创 使用代碼模擬實現殭屍進程, 孤兒進程

在進程運行時,由於某些原因會產生殭屍進程和孤兒進程,殭屍和孤兒兩個詞語形象的體現某進程的運行狀態殭屍進程:當進程加載到內存中時,需要向操作系統申請資源,正常情況下,當一個進程正常退出時,這個進程的資源會被他的父進程或者操作系統回收,如果這

原创 rpm安裝和yum安裝的區別(配置yum源)

yum是從網絡安裝源上下載rpm,如果存在依賴關係會把依賴的rpm同時下載安裝(安裝包都以rpm結尾)rpm是安裝本地存在的rpm包,如果存在依賴也需要安裝上源碼安裝是將源代碼通過預處理,編譯,彙編,鏈接形成可執行程序配置yum源(有網操

原创 cgdb安裝教程

安裝步驟(有網操作):下載cgdb-0.6.7.tar.gz壓縮文件:wget  http://cgdb.me/files/cgdb-0.6.7.ta

原创 fread()和fwrite()詳解

fread()從文件中讀取數據函數原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);ptr:指向保存結果的指針;size:每個數據類型的大小;nmemb

原创 gcc編譯爲什麼要加-g選項

加上-g 選項,會保留代碼的文字信息,便於調試下面兩幅圖是有無 -g 選項調試的區別(我是用的是cgdb,比gdb稍微好用一點,文章結束附帶cgdb下載教程)先來一段簡單的代碼:如果使用 gcc test.c, 再使用cgdb調試時的效果

原创 最小棧

最小棧:有入棧,出棧,取棧頂元素,取出棧內的最小值的時間複雜度均爲O(1);有兩種實現方式:第一種:使用一個棧沒入棧一個元素,都再次把最小值插入,所以每次入棧,其實要入兩個元素,棧頂永遠是最小值,取棧內最小值就是取棧頂元素,將9725入棧

原创 Linux下打印彩色進度條

代碼如下:#include<stdio.h> #include<stdlib.h> int main() { char jdt[103] = " "; int i = 0; int j = 0; int f

原创 C語言實現通訊錄(文件版本)

通訊錄功能簡介:添加一個聯繫人刪除一個聯繫人查詢指定聯繫人信息修改指定聯繫人信息顯示所有聯繫人信息清空所有聯繫人信息所有聯繫人按名字排序頭文件hest.h#pragma once #define NAME_MAX 32 //名字最大

原创 數據結構—隊列的實現(順序表)

數據結構中的隊列有“先進先出”的特點,意思是最先被存進隊列中的數據,總是最先被取走一個隊列只有初始化,銷燬,入隊列,出隊列和取隊首元素,這些限制往往使在操作數據時更安全,代碼容易實現,出現BUG的機會就很少上圖隊列,如過進行了多次入隊列和

原创 環境變量

基本概念環境變量(environment varriables)一般是指在操作系統中用來指定操作系統運行的一些參數比如在編寫c/c++代碼時,在鏈接的時候,從來都不知道所鏈接的靜態庫動態庫在哪,但是照樣可以鏈接成功,生成可執行程序,還有當

原创 用fock實現簡易shell(程序替換)

fork之後就會創建則進程,數據、堆、棧有兩份,代碼仍然爲一份但是這個代碼段成爲兩個進程的共享代碼段都從fork函數中返回,當父子進程有一個想要修改數據或者堆棧時,兩個進程真正分裂子進程在創建的時候會複製父進程的代碼。不管是共用代碼還是複

原创 fork和popen/system

先介紹一下fork所需頭文件:#include <unistd.h>fork的原型: pid_t fork(void);返回值:pid_t實際上是一個宏定義的int類型當調用成功時,fork的返回值如果是0, 則是子進程在運行,返回值大於