Time of Update: 2018-12-03
#加了點注釋#Rockie Cheng#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>#include <getopt.h> #include <fcntl.h> #include <unistd.h>#include <errno.h>#include
Time of Update: 2018-12-03
1、刪除字串s中出現的所有字元squeeze(char s[ ], int c)void squeeze_test(char str[],int c) { int i,j; for (i=j=0;str[i] !='\0'; i++) if (str[i] != c) str[j++]=str[i];
Time of Update: 2018-12-03
炒股看一下周、月線十分有必要,很多時候,周、月線已經死叉下行,中長線趨勢走壞,但日線偏偏發出金叉,K線也走好,量價配合也好,而此時介入,多數情況下就是中、短期頭部。下面就KDJ指標在日、周、月線中的不同表現談一下自己的看法。(注意:適用範圍為你選定的目標股) 1、KDJ日、周、月線低位金叉——低位啟動,堅決買進。 如果選定的目標股日線KDJ指標的D值小於20,KDJ形成低位金叉,而此時周線KDJ的J值在20以下向上金叉KD值,或在強勢區向上運動;同時月線KDJ也在低中位運行,且方向朝上,可堅
Time of Update: 2018-12-03
自引用結構任務:統計輸入中所有出現單詞的次數。兩種解決方案:<1>、在讀取輸入中任意單詞的同時,就將它放置到正確的位置,從而始終保證所有單詞是按順序排列的。<2>、採用一種二叉樹的資料結構每個不同的單詞在樹中都是一個節點,每個節點包括:一個指向該單詞內容的指標一個統計出現次數的計數值一個指向左子樹的指標一個指向右子樹的指標任何節點最多擁有兩個子樹,也可能只有一個子樹或一個都沒有。要點:對節點的所有操作都要保證,任何節點的左子樹只包含按字典序小於該節點中單詞的那些單詞,右子
Time of Update: 2018-12-03
1、有效指標運算包括:相同類型指標之間的賦值運算;指標同整數之間的加法或減法運算;指向相同數組中元素的兩個指標間的減法或比較運算;將指標賦值為0或指標與0之間的比較運算。例1:#define ALLOCSIZE 10000static char allocbuf[ALLOCSIZE];static char *allocp = allocbuf; char *alloc(int n){ if (allocbuf +ALLOCSIZE -allocp >= n) {
Time of Update: 2018-12-03
<Unix環境進階編程>apue.h在Fedora14下開發環境搭建學習linux有一段時間了,剛開始學Linux C 系統編程時用的書是<Linux C編程實戰>,這本書感覺入門學習還不錯,裡面的程式易理解,但看了K&R的巨著<C程式設計語言>,<Linux C編程實戰>還是不太深厚(國人編書的經常犯的毛病)好像講了什麼、其實什麼都沒講。這些天從網上買了一本《UNIX環境進階編程》。裡面出現作者Rago自編的apue.h標頭檔,於是想從網
Time of Update: 2018-12-03
1、push函數:把f壓入到值棧中#define MAXVAL 100int sp = 0;double val[MAXVAL];void push(void){ if (sp < MAXVAL) val[sp++] = f; else printf("error: stack full, can't push %g\n",f);}2、pop函數:彈出並返回棧頂的值double pop(void){ if (sp > 0)
Time of Update: 2018-12-03
出現Oops kernel panic後,要靜下心來冷靜分析,結合Oops提示資訊,猜測代碼可能出錯的原因、類型等,然後定位到具體的.c或.h檔案。有效方法之一就是結合程式的反組譯碼,跳轉到出錯處。將產生的無壓縮的核心鏡像反組譯碼, objdump -D vmlinx 反組譯碼你的核心objdump -D vmlinux
Time of Update: 2018-12-03
一款CPU是大還是小端,關係到程式的儲存,識別它是嵌入式系統中很重要的環節。1、大端比如SUN公司、摩托羅拉公司的處理器IBM-370S和PDP-10S均是大端。網路上傳輸的也是大端。地址7305985 出存放的內容是十六進位0x04030201。那麼:/* x[0] = 0x04 *//* x[1] = 0x03 *//* x[2] = 0x02 *//* x[3] = 0x01 */2、小端ARM、整個Intel的X86架構序列處理器均是小端。7305985 出存放的內容是十六進位0x040
Time of Update: 2018-12-03
uCOS作業系統移植分析一、OS_CPU.H檔案 1、處理器必須滿足以下要求: (1). 處理器的C編譯器能產生可重新進入代碼。 (2). 用C語言就可以開啟和關閉中斷。 (3). 處理器支援中斷,並且能產生定時中斷(通常在10至100Hz之間)。 (4). 處理器支援能夠容納一定量資料(可能是幾KB)的硬體堆棧。 (5.) 處理器有將堆棧指標和其它CPU寄存器讀出和儲存到堆棧或記憶體中的指令
Time of Update: 2018-12-03
記憶體映射和DMAstruct page { unsigned long flags; /* Atomic flags, some possibly * updated asynchronously */ atomic_t _count; /* Usage count, see below. */ //對該頁的訪問計數,當計數值為0時,給空閑鏈表。 union { atomic_t _mapcount; /* Count of ptes mapped in mms,
Time of Update: 2018-12-03
#include <stdio.h>#include <string.h>#include <ctype.h>#define MAXWORD 10#define NKEYS (sizeof keytab / sizeof keytab[0])struct key{ char *word; int count;}keytab[]={ {"auto",0}, {"break",0}, {"case",0}, {"char",0}, {"const",0},
Time of Update: 2018-12-03
基於mini2440的一個簡單移植程式led.c#include "config.h"#define LED1 (0<<5) //定義LED,GPB5#define TaskStkLength 64 //定義堆棧長度OS_STK TaskLEDStk[TaskStkLength]; //定義任務LED的堆棧void TaskLED(void *pdata); //聲明任務LEDint Main(void)
Time of Update: 2018-12-03
1、指向數組的指標與指標數組int (*p)[10]; // 指向數組的指標:p是一個指標,p指向一個由10個元素組成的數組int *p[10]// p先與[]結合,表示p是個數組,這個數組的每一個元素都是int*的指標。#include<stdio.h>#include<string.h>void main(void){void sort(char (*p)[6]);int i;char str[10][6];char (*p)[6];printf("input 10
Time of Update: 2018-12-03
最近在做BACnet協議棧開發,在做Linux裝置驅動程式時需要使用GPIO口作為控制訊號,於是Employing char device driver時遇到一些Bug,需要去Fix。#insmod s3c2440_gpf.ko //安裝模組#lsmod //查看主裝置編號,假設為xxx.#mknod /dev/gpf c xxx 0 //建立裝置檔案編寫application程式時,在目標板上運行時居然出現如下error:然後運行app
Time of Update: 2018-12-03
1、readlines函數:讀取輸入行int readlines(char *lineptr[], int maxlines){ int len, nlines; char *p, line[MAXLEN]; nlines = 0; while ((len = getline(line, MAXLINE)) > 0) if (nlines >= maxlines || (p = alloc(len)) == NULL)
Time of Update: 2018-12-03
設定檔/etc/syslog.conf是系統記錄檔的Deamon服務,是syslogd這個daemon的設定檔。syslogd負責產生Linux的記錄檔資訊,klogd負責產生linux核心資訊記錄檔。典型的syslog.conf檔案的內容如下:/etc/syslog.conf檔案# Log all kernel messages to the console.# Logging much else clutters up the screen.kern核心產生資訊的地方kern.*
Time of Update: 2018-12-03
#include <stdio.h>#include <string.h>#define MAXLINES 5000char *lineptr[MAXLINES];int readlines(char*lineptr[], int nlines);void writelines(char *lineptr[], int nlines);void qsort1(char*lineptr[],int left, int right, int (*comp)(void*,
Time of Update: 2018-12-03
在驅動程式編寫過程中,很少會注意到IO Port和IO Mem的區別。雖然使用一些不符合規範的代碼可以達到最終目的,這是極其不推薦使用的。1. CPU是i386架構的情況在i386系列的處理中,記憶體和外部IO是獨立編址,也是獨立定址的。MEM的記憶體空間是32位可以定址到4G,IO空間是16位可以定址到64K。在Linux核心中,訪問外設上的IO Port必須通過IO Port的定址方式。而訪問IO
Time of Update: 2018-12-03
周末公司召開了一個工程師大會,在總結自身經驗教訓的同時,還外請了一些人來給我們做報告,其中就有一個Google 的測試經理。他用一個小時的時間儘可能詳盡地給我們介紹了一下 Google 的開發流程和特點,再一次加強了了 Google 在我心目中的形象:工程師的天堂。Q&A 環節中有一個同事問了一個問題,他說:“你以前也待過很多家公司,像華為等,你能說明一下為什麼只有 Google 產生了工程師文化嗎?”那位經理說他自己也不清楚,但給我們講了一個很有趣的小故事:Google