程式設計筆記(2)

2021-05-22 15:42:56 字數 4258 閱讀 5357

21.說明乙個指標 uint8_t p;

p = &ddrb;

編譯提示 警告:assignment discards qualifiers from pointer target type

這是什麼型別的警告。

ddrb是乙個指向常量的指標

22.strcmp("t恤衫", "t恤");返回結果不為零。

strncmp("t恤衫", "t恤",strlen("t恤"));返回結果為零。why ?????????????

23.出現了這個錯誤:stray '/161' in program

原來是因為那行出現了全形字符.

24.最近遇到乙個奇怪的問題,**中的中文注釋能使程式出錯!!!

試看如下的**:

int main()

執行的結果居然是:a=0 b=0

分析後發現中間的賦值語句被當成了注釋,忽略掉了。

請問各位大蝦,是否遇到此現象?怎麼解釋?怎麼避免此現象?

編譯環境是vc++6.0。

往上人普遍認為是編譯器在判斷字元編碼的時候出錯。

有人發現/*和*/之間的字元是奇數就會出錯。

25.名稱:

sscanf() - 從乙個字串中讀進與指定格式相符的資料.

[編輯本段]函式原型:

int sscanf( const char *, const char *, ...);

int scanf( const char *, ...);

[編輯本段]標頭檔案:

#include

[編輯本段]說明:

sscanf與scanf類似,都是用於輸入的,只是後者以鍵盤(stdin)為輸入源,前者以固定字串為輸入源。

第乙個引數可以是乙個或多個 ]type | ' ' | '/t' | '/n' | 非%符號}

注:1、 * 亦可用於格式中, (即 %*d 和 %*s) 加了星號 (*) 表示跳過此資料不讀入. (也就是不把此資料讀入引數中)

2、表示a,b,c中選一,[d],表示可以有d也可以沒有d。

3、width表示讀取寬度。

4、:引數的size,通常h表示單位元組size,i表示2位元組 size,l表示4位元組size(double例外),l64表示8位元組size。

5、type :這就很多了,就是%s,%d之類。

6、特別的:%*[width] type 表示滿足該條件的被過濾掉,不會向目標引數中寫入值

[編輯本段]支援集合操作:

%[a-z] 表示匹配a到z中任意字元,貪婪性(盡可能多的匹配)

%[ab'] 匹配a、b、'中一員,貪婪性

%[^a] 匹配非a的任意字元,貪婪性

[編輯本段]例子:

1. 常見用法。

char buf[512] = ;

sscanf("123456 ", "%s", buf);//此處buf是陣列名,它的意思是將123465以%s的形式存入buf中!

printf("%s/n", buf);

結果為:123456

2. 取指定長度的字串。如在下例中,取最大長度為4位元組的字串。

sscanf("123456 ", "%4s", buf);

printf("%s/n", buf);

結果為:1234

3. 取到指定字元為止的字串。如在下例中,取遇到空格為止字串。

sscanf("123456 abcdedf", "%[^ ]", buf);

printf("%s/n", buf);

結果為:123456

4. 取僅包含指定字符集的字串。如在下例中,取僅包含1到9和小寫字母的字串。

sscanf("123456abcdedfbcdef", "%[1-9a-z]", buf);

printf("%s/n", buf);

結果為:123456abcdedf

5. 取到指定字符集為止的字串。如在下例中,取遇到大寫字母為止的字串。

sscanf("123456abcdedfbcdef", "%[^a-z]", buf);

printf("%s/n", buf);

結果為:123456abcdedf

6、給定乙個字串iios/12ddwdff@122,獲取 / 和 @ 之間的字串,先將 "iios/"過濾掉,再將非'@'的一串內容送到buf中

sscanf("iios/12ddwdff@122", "%*[^/]/%[^@]", buf);

printf("%s/n", buf);

結果為:12ddwdff

7、給定乙個字串「「hello, world」,僅保留world。(注意:「,」之後有一空格)

sscanf(「hello, world」, "%*s%s", buf);

printf("%s/n", buf);

結果為:world

%*s表示第乙個匹配到的%s被過濾掉,即hello被過濾了

如果沒有空格則結果為null。

sscanf的功能很類似於正規表示式, 但卻沒有正規表示式強大,所以如果對於比較複雜的字串處理,建議使用正規表示式.

26.type enum bool;

這樣一行**編譯的時候出現如下錯誤

error: expected identifier before numeric constant

說的是數字常量前應該有標誌符,但是false就是標誌符啊。

什麼原因呢?

可能是在這行之前有#define false 0

這下明白了吧。

當多人協作,使用其他的庫就可能出現這種情況,所以盡量少用巨集吧

27.qtextcodec

qtextcodec 類提供文字編碼之間的轉換。

qt使用unicode來儲存,繪製以及操作字串。在很多情況下,你可能想要使用不同的編碼方式來處理資料。例如大部分的日語檔案都被儲存在shift-jis或者 iso2022的檔案中,而俄羅斯的使用者常常使用koi8-r或者cp1251編碼方式。qt提供了乙個qtextcodec 類集合來從unicode格式轉化到相應的格式。

**部分

#include

#include

#include

#include

int main()

file.close();    

}return 0;

}**中的主要改動就是黃底的部分

意思就是創立乙個中文gbk編碼樣式,然後按照這種方式來把讀入的檔案流進行重新編碼,這樣中文就可以順利輸出了,不信你可以試一試,哈哈,先介紹這麼多,下次有什麼下次再寫啦。

28.今天剛剛裝了qt,並執行了qt的乙個簡單的example,然後執行了生成在/debug 資料夾下的 *.exe 檔案,但雙擊執行就提示「沒有找到mingwm10.dll,因此這個程式未能啟動。重新安裝應用程式可能會修復此問題。」 這個問題可能是環境變數沒設定好,可以通過:我的電腦->屬性->高階->環境變數來修改path,這樣能永久修改path。現在我把"c:/qt/2009.04/mingw/bin;c:/qt/2009.04/qt/bin"加入到path後,可以執行了。

下面來看看mingwm10.dll的作用:

mingw的全稱是minimalistic gnu for windows,它提供了基於gnu gcc 和其他相關程式( make、autoconf 等等)構造win32 程式所必需的標頭檔案和庫。也許你首先會想到cygwin。兩者都是可以將unix 下程式在win32下編譯執行的辦法。但所不同的是,cygwin中是將完整的posix 系統呼叫對映到本地api,使用乙個模擬posix 呼叫的dll。因此在實際執行時的效率比不上本地編譯**。另外一點:cygwin的license 是gpl,也就是說你在cygwin上平台的**必須開放。(這個是很難讓人接受的,僅僅因為移植**就要開放原始碼)

而mingw 與cygwin的上述兩點恰好相反,它將**編譯成win32 本地**,使用msvcrt.dll的c執行時庫。而且mingw的其他執行庫不以gpl license保護,這也意味著你使用mingw編譯的**不必公開原始碼。msvcrt.dll本身是隨win32平台發行的,因此這是乙個完全免費的環境。

29.使用qfile::readline()時,發現這函式把每一行最後的換行符也讀取了

30.qt designer編輯ui介面,若修改右側的objectname會提示invalid use of undefined type "ui:mainwindow".解決辦法是把objectname改為mainwindow.

注意,使用objectname右側的恢復鍵只能把objectname恢復為mianwindow,而不是mainwindow。

GPU程式設計筆記(2)

2009 02 02 19 52 高階渲染語言基礎 1 hlsl語法與c語法非常類似。2 資料型別 bool int 32位signed half 16位float float 32位float double 64位float 3 變數宣告 與c一樣 4 型別修飾 可以使用const,與c 一樣 r...

Windows程式設計筆記2

1.關於hdc hdc hdc hdc getdc hwnd for int i 0 i 20 i releasedc hwnd,hdc getdc 與releasedc 一起使用。不能用於beginpain hdc beginpaint hwnd,ps textout hdc,0,0,paintd...

網路程式設計筆記2

tcp udp socket程式設計步驟 sockets 套接字 程式設計有三種,流式套接字 sock stream 資料報套接字 sock dgram 原始套接字 sock raw windows環境下tcp udp程式設計步驟 1.基於tcp的socket程式設計是採用的流式套接字。在這個程式中...