用 C原生API 寫Symbian日誌檔案

2021-04-14 09:12:42 字數 2032 閱讀 7404

宣告

我們都知道symbian裡沒辦法象pc那樣用printf()、symtem.out.println()等來列印debug資訊到cmd控制台,那麼我們在debug的時候只能用ceikonenv::infomsg()來把資訊輸出到symbian程式的視窗上,但是這個函式只能在模擬器上才起作用,除錯起來也很不方面!還有乙個辦法就是把debug資訊輸出到乙個文字檔案裡,這樣就能根據文字檔案來除錯symbian程式。

我們知道,在c語言裡對檔案的操作是利用file結構體進行的,具體實現時,首先需要利用fopen函式返回乙個指向file結構體的指標,該函式的宣告形式如下:

file *fopen(const char *filename,const char *mode);

filename引數就是乙個指向檔名字串的常量指標型別

mode指定檔案開啟的模式

mode的取值如下:

r:為讀取而開啟。如果檔案不存在或不能找到,函式呼叫失敗。

w:為寫入操作開啟乙個空檔案。如果給定的檔案已經存在,那麼它的內容將被清空。

a:為寫入操作開啟檔案。如果檔案已經存在,那麼在該檔案尾部新增新資料,在寫入新的資料之前,不會移除檔案中已有的eof標記;如果檔案不存在,那麼首先建立這個檔案。

r+: 開啟檔案用於寫入操作和讀取操作,檔案必須存在。

w+:為寫入操作和讀取操作開啟乙個空的檔案。如果給定檔案已經存在,那麼它的內容將被清空。

a+:開啟檔案用於讀取操作和新增操作。並且新增操作在新增新資料之前會移除該檔案中已有的eof標記,然後當寫入操作完成之後再恢復eof標記。如果指定檔案不存在,那麼首先將建立這個檔案。

檔案的寫入

size_t fwrite(const void *buffer,size_t size,size_t count,file *stream);

buffer:指向將要被寫入檔案的資料。

size:以位元組為單位的項的大小。型別是size_t,實際上就是unsigned integer型別。

count:將要被寫入的項的最大數目。

檔案的讀取也類似

size_t fread(void *buffer,size_t size,size_t count,file *stream);

由以上的知識,我們可以在symbian專案中寫入下面的**,從而實現symbian日誌!

void debug(const char* amsg)

void debug(const tdesc& amsg)

我們還需修改我們的.mmp檔案:

systeminclude /epoc32/include/libc

library estlib.lib

別忘了,mmp檔案被修改後,還得重新build一次。比如:bldmake bldfiles。

最後,別忘了在你退出程式之前,呼叫下面這一行指令:

closestdlib();

public:

void println(const tdesc& amsg);

private:

cconsolebase* iconsole;

2. 在myview.cpp裡加入

用 C原生API 寫Symbian日誌檔案

宣告 我們都知道symbian裡沒辦法象pc那樣用printf symtem.out.println 等來列印debug資訊到cmd控制台,那麼我們在debug的時候只能用ceikonenv infomsg 來把資訊輸出到symbian程式的視窗上,但是這個函式只能在模擬器上才起作用,除錯起來也很不...

用 C原生API 寫Symbian日誌檔案

90 程式設計師寫不出無bug的二分查詢程式?程式設計珠璣 第二版 一書第四章中提及過100多名專業程式設計師使用兩個小時的充足時間編寫乙個簡單的二分查詢程式,結果發現90 的人編出的 都有bug,knuth也在他的 sorting and searching 一書中提過,第乙個二分查詢程式在194...

用 C原生API 寫Symbian日誌檔案

宣告 我們都知道symbian裡沒辦法象pc那樣用printf symtem.out.println 等來列印debug資訊到cmd控制台,那麼我們在debug的時候只能用ceikonenv infomsg 來把資訊輸出到symbian程式的視窗上,但是這個函式只能在模擬器上才起作用,除錯起來也很不...