1.聽說C/C++的類別庫或函式庫都是用語言的語法寫出來的東西,只是為了讓 其他人不重複的撰寫常用的程式,所製作而成的"庫"。是嗎?
2.如果上面是對的,要怎麼樣不使用C++的類別庫(或是說函式)的狀況下寫出"建立檔案"的類別?
3.能有程式碼給我看嗎?
一個入了門-進不了階的人~~><"
2006-11-05 13:39:28 · 1 個解答 · 發問者 ? 2 in 電腦與網際網路 ➔ 程式設計
4.那麼標準函式庫裡頭的函式究竟是能以C++的語法寫出來嗎?還是說要利用到組合語言?
5.再問:我想將JPG和EXE檔合併,原理是?我想自己寫能讓大部分的檔與EXE檔合併的程式〈就是說當你在看圖時有程式在偷偷執行〉我想知道原理?
2006-11-06 17:02:13 · update #1
建檔是較低階的東東,牽涉到不同的作業系統使用不同的方式。在 DOS 裡,你要: DS:DX 指向完整檔名 (檔名,含路徑) AL 存模式碼 AH 存 0x3D (0x3D子功能,就是開檔) 執行 21H 系統呼叫傳回值 C flag = 0 成功,AX 的值是 File Handle C flag = 1 失敗,AX 的值是錯誤碼: 1 模式的 4~6 bits 不合法 2 檔案不存在 3 徑名不存在 4 開檔太多,File Handle 用完了(Config.sys 裡 File = 設太小) 5 拒絕開檔 6 模式的 0~2 bits 不合法至於 Linux, Windows 或其它作業系統,我沒研究,無法告知囉!
2006-11-06 19:57:52 補充:
現在才看到,漏回答您 1. 的部份:除了不用重複寫常用的程式外(在 C++這個是重點),還有另一個很重要的東東,就是相容性。像您問的開檔,不同的作業系統完全不同作法,請問若是不提供,一般的程式師要怎麼辦?像我,我只對 DOS 的開檔有研究。那,到了 Linux, Windows, Zenix, Unix, ...,我不就完全無法做開檔的動作了?
2006-11-06 20:02:34 補充:
3. 的部份您真的要我給您看,要請您再等 4 ~ 7 天。我在趕作業,趕完只有一天閒著,要回答另 2 題。
因為那東東要 inline Assembly,我只會 Turbo C 的 inline Assembly。您若不會 Turbo C,或您不懂您會的 C 如何做 Inline Assembly,Show Code 給您也沒多大意義。
只要您會 inline ASM, 2. 的回答就能讓您寫出程式了。它在 Windows 下,〝應〞可以開啟 FAT32 8.3 的檔案。
2006-11-06 20:08:56 補充:
Linux 還支援非 Intel 系的 CPU。
所以,就算您拿到 Linux 的低階開檔方式,到了不同的電腦,那程式還是不能用!
所以,
1. 低階的東東,沒事不要用!
(我以前就是太鑽低階的東東了,現在改朝換代了,成了大肉腳!)
2. 常用的低階的東東,Compiler 差不多都非提供不可。
2006-11-06 22:20:00 補充:
4. 極少數用到低階的東東要用 Assembly,其絕大多數的都不用。5. 與您的本題幾乎無關,建議您另問一題新題。個人看法(個人研究有限,回答的內容可能不正確): 您問的東東〝應〞是不可能的!!您是在說某些病毒吧!?
2006-11-06 22:21:09 補充:
它們是假的 JPG,真的 EXE!而不是把這2型檔合併了! 在 Linux 裡,可執行檔是靠屬性來分,不是靠副檔名; 在 DOS / Windows 裡是靠副檔名,不是靠屬性。 所以,在 DOS 裡,這是絕對不可能發生的。(只有 bat, com 和 exe 可執行。) 但在 Windows 裡 (這我沒研究),可執行的東東太多了! 而且,還有自動關聯!
2006-11-06 22:21:41 補充:
但在自動關聯被修改(如被病毒改。但病毒還沒執行,所以在此例是不可能)前,JPG 是不會被執行的。 至於 Windows 的執行機制,個人不是很了解;是不是有啥 Bug 可鑽,您要另外請教 Windows 的高手了。
2006-11-05 19:24:58 · answer #1 · answered by ? 7 · 0⤊ 0⤋