Time of Update: 2018-12-04
之前寫過一個二叉尋找樹,其中最麻煩的是刪除元素的方法,一共分了8種情況,主要是要區分是否是根節點和非根節點,寫的太煩了,詳細請參見:http://blog.csdn.net/todd911/article/details/8471566今天要來簡化一下這個方法,之前我還寫過一篇《簡潔的單項鏈表插入操作》,利用雙指標,簡化了根節點和非根節點的區別,詳細請參見:http://blog.csdn.net/todd911/article/details/8941593,其實在二叉尋找樹中也可以使用這種方
Time of Update: 2018-12-04
alloca()函數用來在棧中分配size個位元組的記憶體空間,因此函數返回時會自動釋放掉空間。alloca函數定義及庫標頭檔如下:/* Allocate a block that will be freed when the calling function exits. */extern void *alloca (size_t __size)
Time of Update: 2018-12-04
輸入輸出函數家族家族名 目的 可用於所有的流 只用於stdin和stdout getchar 字元輸入 fgetc,getc getcharputchar 字元輸出 fputc,putc
Time of Update: 2018-12-04
本文轉載於:http://hi.baidu.com/bali_bao/item/f90a4f76121b113a6dc37c4bprintf()用法詳解 一、printf()函數是式樣化輸出函數, 一般用於向準則輸出裝置按規定式樣輸出訊息。正在編寫步驟時經常會用到此函數。printf()函數的挪用式樣為: printf("<式樣化字串>",<參量表>); 其中式樣化字串包括兩部分內容: 一部分是正常字元,
Time of Update: 2018-12-04
單項鏈表插入操作,我想應該是最基礎不過的東西,今天要介紹的是比較簡潔的版本。需求:插入一個node到鏈表的正確位置,當前鏈表中節點的value已經按照由小到大進行排列。傳統的插入操作:int insertNode(Node** rootp,int new_value){Node *current;Node *previous;Node *new;current = *rootp;previous = NULL;while(current != NULL &&
Time of Update: 2018-12-04
r 開啟唯讀檔案,該檔案必須存在。r+具有讀寫屬性,從檔案頭開始寫,保留原檔案中沒有被覆蓋的內容。該檔案必須存在。w 開啟唯寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。 w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。 a 以附加的方式開啟唯寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。 a+
Time of Update: 2018-12-04
在c語言中如果要擷取1~10的隨機數,那麼可能大部分人的想法都是通過以下代碼擷取:rand()%10+1;(雖然rand產生的是一個偽隨機數,但是這邊姑且認為他是真隨機的吧)但是產生1~10的機率真的是一樣的嗎?不是的,下面我們來分析以下。假如rand返回的最大值為105,那麼使用上面那種方法擷取的隨機數那麼產生1~6的機率要比產生7~10的機率要大,看出來了嗎?因為如果rand函數傳回值的範圍為0~99,那麼使用上面的方式產生1~10的機率是一樣的,但是,現在rand傳回值範圍為0~105,如
Time of Update: 2018-12-04
建立一個檔案叫a.h,它包含了聲明:extern int i;需要用到外部對象filename的每個C原始碼都應該加上這樣一個語句:#include “a.h”最後我們選擇一個C源檔案,在其中給出i的初始值,我們稱這個檔案為a.c#include <stdio.h>#include "a.h"int i=8;int main(void){ printf("%d\n",i); return
Time of Update: 2018-12-04
1.1. Getting Started1.1. 入門 This manual is written with the assumption that you are at least somewhat familiar with the C programming language and basic programming concepts. Specifically, familiarity with ISO standard C (see ISO C), rather than
Time of Update: 2018-12-04
#include <stdio.h>#define peach inttypedef int banana;int main(void){ unsigned peach a; unsigned banana b; return 0;}上面的代碼中,unsigned banana b;該行編譯會出現錯誤。因為typedef是一種徹底的“封裝”類型,而#define只是簡單的文本替換。再看,#include
Time of Update: 2018-12-04
本文章基於http://jesserei.blog.163.com/blog/static/121411689200983081421390/ ,稍微進行了修改通常 Linux 下的各種命令都有許多的命令列參數可以選擇,比如:gcc -g -lm foo.c -o foo getopt()就是用來分析命令列參數的函數。在繼續討論getopt 之前,先要明確兩個概念:選項(option) 和 選項參數(argument)。在上面的例子中,-g 中的 g,-o 中的 o 還有 -lm 中的 l
Time of Update: 2018-12-04
#include <stdio.h>#include <malloc.h>int main(void){ int *p; int *a; a = (int*)malloc(sizeof*p); *a=1; printf("%d\n",*a); free(a); return 0;}上面這段代碼,編譯運行都沒有任何問題。a =
Time of Update: 2018-12-04
將數組放到結構體中,直接使用“=”就能將數組中的值全部拷貝到其他相同類型的數組中。#include <stdio.h>struct array_tag{ int a[10];};int main(void){ struct array_tag m = {{1,2,3,4,5,6,7,8,9,0}}; int i; for(i=0;i<10;i++){ printf("%d ",m.a[i]);
Time of Update: 2018-12-04
在網上看到別人寫的replaceAll方法,感覺不太好,所以覺得自己寫一個,因為時間倉促,如果有不對的地方請多多指教。c代碼如下:#include <stdio.h>#include <malloc.h>#include <string.h>char* replaceAll(char* src, char* find, char* replaceWith){//如果find或者replace為null,則返回和src一樣的字串。if(find == NULL
Time of Update: 2018-12-04
方法一:#include <stdio.h>#define PRINT(FORMAT,VALUE) \ printf("the value is "FORMAT"\n",VALUE);int main(void){ int x = 6; PRINT("%d",x+2); return 0;}運行結果:the value is 8方法二:#include <stdio.h>#define
Time of Update: 2018-12-04
這是由我“無中生有”引起的問題,記錄下來或許對大家有協助。 我們的一個測試程式是用C#寫的,它會讀取一個設定檔,設定檔裡包含串口的設定或者網路IP/連接埠的設定。 我有一次淡疼的把這個程式改為了“Windows 2000相容模式”,在後來的使用中便發現這個程式無法正確解析設定檔。 具體原因已經超出我的能力範圍。我想和XP相容模式下對於程式運行環境的差異有關。 在native的XP下,程式有足夠的許可權訪問或申請它需要的資源;而Windows 2000相容模式下,作業系統為程式的運行“
Time of Update: 2018-12-04
#include <iostream> #include <winsock.h> #pragma comment(lib,"wsock32.lib") using namespace std;int main(){ WSADATA data; // 載入類庫 WSAStartup(MAKEWORD(1, 1), &data); // 初始化socket
Time of Update: 2018-12-04
今天本來是周六,薄荷老大昨晚說來加一下班,正好可以來做這裡靜靜的看會書。昨晚去了書店買了3本書。一本C的 一本C++的一本EJB的。為了學好C++,我還是老實的從C開始學起來了。王猛大哥說每天最少看500行代碼,然後被類庫,測試我。感謝他們。上午看了一會書,學到了一些以前在JAVA中沒有特別去注意的東西,這些都是基礎的東西。先說一下學到的吧: 1:int 一般來說是長度為16位,也就是2個位元組,short int 也一般為16個位元組,long
Time of Update: 2018-12-04
#include <iostream> using namespace std;struct student{ char name[30]; int age; struct student *next;};int main(){ struct student st1, st2, *head, *p; strcpy(st1.name, "張三"); st1.age = 20; strcpy(st2.name, "李四"); st2
Time of Update: 2018-12-04
純C封裝的,來看看吧分為queue.h queue.c main.c分別如下: // 定義資料域的資料結構,這裡為了簡單期間資料域有2個簡單的屬性群組成。struct business_data{char name[50];int age;};// 定義隊列的節點資料節點struct queue_node{// 為了節約運行時期的記憶體,我們這裡用指標來指向業務資料的節點,具體使用請根據實際情況來struct queue_node *next; // 指向下一個節點struct