Johnny talk Johnny way


opendir讀取目錄裡的檔案清單
2009, 四月 22, 星期三, 3:10 下午
分類: C Language | 標籤: , , , , , , ,

其實跟讀取檔案內容差不多, 一開始想用ls輸出檔案,再從檔案中來取得檔案清單,但是必須有可以使用空間的先決條件,如果用popen也覺得不太安全(在thread的狀況下使用),後來找到有現成的system call可以用,就是opendirreaddir,
還蠻簡單的, 請看下面的範例程式囉~


#include
#include

main(int argc, char **argv)
{
struct dirent *entry;

DIR *dh = opendir(path);

while ((entry = readdir(dh)) != NULL) {
printf("%s\n", entry->d_name);
}

closedir(dh);
}



Linux Framebuffer … Action!
2009, 四月 10, 星期五, 1:39 上午
分類: Linux Device | 標籤: , ,

Frame buffer是一個顯示記憶空間,從試驗中可以直接在指定的位置填入RGB數值,就可以改變螢幕畫面上的一個點;簡單一些,可以下cat命令,把Frame buffer的內容Dump出來,這樣等於是把畫面剪貼下來一樣,若再把畫面Dump回Frame buffer,剛剛的畫面又會回去,很直覺的操作,中間不需要透過複雜的轉換,後面我們就來認識他吧!

一般套裝Linux,Kernel似乎預設就有開啟Frame buffer,所以只要在Loader的參數加上vga mdoe就可以在Console開啟Frame buffer,不過開啟後Frame buffer的解析度跟Color bit就已經決定,不可動態更改。

在loader的選單中加入VESA mode

title Linux
root(hd0,0)
kernel .......................................... vga=792
initrd ...

可以參考的模式如下表

Bits 640×480 800×600 1024×768 1280×1024 1600×1200
8 769 771 773 775 796
16 785 788 791 794 798
32 786 789 792 795 799

開機後,看到企鵝就代表成功啟動Frame buffer囉!



strtok()
2009, 四月 5, 星期日, 5:13 下午
分類: C Language | 標籤: , , ,

以前用ASP在寫購物車的時候會用的split這樣的Func call來解析購物車裡面的內容,覺得這是個很好用的字串工具,現在在寫C的時候也會用到一些文字的設定檔的狀況,不知道有strtok()的狀況下,就是ㄧ個字元ㄧ個字元慢慢判斷,昨天在查CGI Session程式的時候,看到使用了這個System Call,第一個感覺是又驚又喜。

好吧!讓我們來認識strtok()

原型:

#include <string.h>

char *strtok(char *s, const char *delim);

第一個參數s所帶入的是要被切割的字串,

第二個參數delim(定界線)也就是分界的依據字元,

舉個實例:

字串 str="Name=Johnny";

strtok(str, “=");

return回來的字串point會是"Name"

那要如何取出下ㄧ個字節"Johnny"的話呢?

strtok(NULL, “=");

return回來的就是"Johnny"了!

很奇怪, 為什麼不用再傳入字串, 反而是NULL呢?

因為第一次的字串已經被系統暫存到記憶體了,

如果繼續取下ㄧ個字節呢?

return回來的會是NULL喔!

所以可以利用NULL來辨識字串是否已經結束。

千萬要記得必須連續使用喔!




Follow

Get every new post delivered to your Inbox.