2008年12月5日 星期五

C/C++ printf 無號16位數

16位數的數值要如何利用printf列印:

printf("%lld\n", var);

2008年12月2日 星期二

核心目錄下的目錄架構說明

arch :與硬體平台有關的項目,例如 CPU 的等級等等;
crypto :核心所支援的加密的技術,例如 md5 或者是 des 等等;
drivers :一些硬體的驅動程式,例如顯示卡、網路卡、PCI 相關硬體等等;
fs :核心所支援的 filesystems ,例如 vfat, reiserfs, nfs 等等;
lib :一些函式庫;
net :與網路有關的各項協定資料,還有防火牆模組 (net/ipv4/netfilter/*) 等等;
sound :與音效有關的各項模組;

轉錄自鳥哥的Linux私房菜

增加man page的查詢路徑

vi /etc/manpath.config

找尋檔案中MANDATORY_MANPATH的地方
增加一行

MANDATORY_MANPATH 你要增加的路徑(例如/usr/local/man)

以上以Debian為例子

2008年11月13日 星期四

C/C++ 指標(Pointer)

指標變數的變數內容並不是字元或是數值等基本資料型態(int、char、double、float)的值,而是其他變數的記憶體位址(Address)。

指標變數的內容是指向另一個變數的位址。

指標變數宣告的語法:

變數型態 *指標變數名稱

ex:int *ptr
指標變數和指向的變數必須是相同的變數型態:

int *ptr;
char *ptr;
float *ptr;
double *ptr;
取得變數位址是使用&運算元,稱為取址,取出位址:
例如一個變數為
int num =5;
num變數的記憶體位址則為&num
而指標變數int *ptr的變數內容要等於num的位址,方法如下:
ptr = #
或是
int *ptr = #也可以
此時ptr的變數內容即為num的記憶體位址

由於宣告指標變數時,並不會給予指標變數預設值,可能指向某個記憶體位址,所以為了避免使用到錯誤的記憶體位址,因此在宣告指標變數時,給予預設值,因此我們可以讓指標變數指向NULL常數,如下:
int *ptr = NULL;
char *ptr = NULL;
....等

指向NULL代表此指標變數不指向任何記憶體為址,如此一來在寫程式時,可以用來判斷,是否指向正確的記憶體位置,如下:

if ( ptr == NULL )
printf("This is NULL\n");
else
printf("ptr's value = %p\n", ptr);

取得指標變數所指的變數值,請使用*運算元,稱為取值,取出所指向變數的數值或內容:
*ptr --> num
printf("num's value = %d\n", *ptr);

指標變數也可以在宣告時指定初值,不過取得位址的變數一定需要在指標變數前宣告,例如:

int j;

int *prt = &j;

2008年10月30日 星期四

C/C++ printf使用說明

- 列印格式-
-輸出敘述

%c -字元
%s -字串
%d -十進位整數
%u -無號十進位整數
%o -無號八進位整數
%x -無號十六進位整數,以 0 ~ f 表示
%X -無號十六進位整數,以 0 ~ F 表示--
%f -浮點數,小數點型式
%e -浮點數,指數e型式
%E -浮點數,指數E型式
%g -印出 %f 與 %e 較短者
%G -印出 %F 與 %E 較短者
%p -指標位址
%%
-印出百分比符號
-
-控制字元--
-功能
\a -警告音
\b -倒退
\f -換頁
\n -換行
\r -歸位
\t -跳格
\’ -印出單引號
\” -印出雙引號
\\ -反斜線
\/ -斜線
\d -八進位 Ascii 碼
\x -十六進位 Ascii 碼--
-
-修飾子-
-功能
-範例
-
- 向左對齊 -%-3d
+ 將數值的正負號顯示出來 -%+5d
空白 數值為正值時,留一格空白;為負值時,顯示負號 -% 6f
0 將固定欄位長度的數值前空白處填上 0;與 - 修飾子同時使用時,此修飾子無效-- -%07.2f--
數字 欄位長度,當數值的位數大於所定的欄位長度時,欄位會自動加寬它的長度 -%9d
. 數值以 %e, %E, %f 型式表示時,決定小數點後所要顯示的位數 -%4.3f
h 表示 short int 或是 unsigned short int -%5h
l 表示 long int 或是 unsigned long int -%lu

C/C++ 使用typedef建立新型態

使用tyepdef可以重新定義宣告型態成為自行訂定義名稱,使用方法如下:

typedef int INT;
typedef char CHAR;
typedef float FLOAT;
typedef double DOUBLE;

struct company
{
char companyName[20];
char companyAddr[100];
};

重新定義struct company結構宣告型態:
typedef struct company COMPANY;

使用方式如下:

INT a;
CHAR b;
FLOAT c;
DOUBLE d;
COMPANY com;

2008年10月27日 星期一

C/C++ 巢狀結構

巢狀結構指的是結構裡面還有結構。



舉例來說,一間公司如果還有其下子公司,就可以用巢狀結構來表示,例如

子公司結構
struct subCompany
{
char subCompName[20];
char subCompAddr[100];
} ;

母公司結構包含子公司結構

struct mainCompany
{
char mainCompName[20];
char mainCompAddr[100];

struct subCompany comp1;
} ;

宣告一個母公司結構,旗下包含一間子公司,如下:

struct mainCompany asus = {"asus", "台北市北投區", {"和碩", "台北市士林區"}};

存取與使用巢狀結構變數的方法如下:
asus.mainCompName;
asus.mainCompAddr;
asus.comp1.subCompName;
asus.comp1.subCompAddr;

C/C++ 結構陣列

『結構陣列』,Array of Structure,是一種結構型態的陣列。

例如,company的結構:

struct company
{
char companyName[20];
char companyAddress[100];
};

如果要宣告一個結構陣列,儲存三家公司的名稱與地址:

struct company compy[3];

compy這個陣列有三個company結構變數,每個結構變數都擁有companyName與companyAddress這兩個成員

存取與使用結構變數的方法如下:
compy[i].companyName;
compy[i].companyAddress;

2008年8月12日 星期二

C# 識別字

識別字必須是以字母 (大小寫的 A 至 Z) 或底線 (_) 開頭。

合法的識別字:

  • a
  • c
  • _Pen
  • total
  • Car

不合法的識別字:

  • %s
  • #sim
  • +play
  • -integer
  • 5card //不能由數字作為識別字開頭

識別字由字母開頭後, 可由字母、數字組合而成, 但不得包含空白也不得包含運算符號(Operator)。

合法的識別字:

  • car1
  • t12K

不合法的識別字:

  • pen 1 //不得包含空白
  • a+b //不得有運算符號
  • opq#C //不得有#號

識別字不得使用保留字

識別字可使用底線"_"

識別字大小寫視為不同

識別字應使用簡潔有意義的名稱

C# 保留字

abstract
as
base
bool
break
byte
case
catch
char
checked
class const
continue
decimal default
delegate
do
double
else
enum
event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
volatile
void
while

2008年8月5日 星期二

sed 用法

sed (stream editor) 可以分析 Standard Input (STDIN) 的資料,進行取代、刪除、新增、擷取特定行等處理後,再輸出到 standrad out (STDOUT)。

選項:-n :使用安靜 (silent) 模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到螢幕上。但如果加上 -n 參數後,則只有經過 sed 特殊處理的那一行(或者動作)才會被列出來。-e :直接在指令列模式上進行 sed 的動作編輯;-f :-f filename 可以執行 filename 內的 sed 動作;-r :sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)-i :直接修改讀取的檔案內容,而不是由螢幕輸出。
動作說明: [n1[,n2]]functionn1, n2 :選擇進行動作的行數,例如,『10,20[動作行為] 』
function:a :新增, a 的後面可以接字串,這些字串會在目前的下一行出現。c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行。d :刪除, d 後面通常不接任何字串;i :插入, i 的後面可以接字串,這些字串會在目前的上一行出現;p :列印,將某個選擇的資料印出。通常 p 會與參數 sed -n 一起運作。s :取代,s 的動作可以搭配正規表示法。例如 1,20s/old/new/g 。