2011-05-22 81 views
0

那麼它可能會明顯一些,但不是我(和它沒有在文檔中提到的):寫系統調用停靠在NUL

int main(int argc, char** argv) { 
    char s[]= {'h','\0','l','0'}; 
    int fd=open("myfile.txt", O_RDWR|O_CREAT|O_APPEND,0644); 
    write(fd,s,4); 
    return 0; 
} 

只會寫「H」的文件 - 所以nul在緩衝區終止write(),儘管被要求寫過去嗎?那我怎麼寫一個nul文件呢?

謝謝!

+0

當我運行你的代碼,它的權利H10的文件,所以它不是在'\ 0'上停止,這是在Ubuntu natty – freethinker 2011-05-22 10:00:26

+0

你如何確保數據不存在?你在窗戶上嗎? – Mat 2011-05-22 10:02:40

+0

我在一個較舊的Ubuntu版本上試過這個 - 不會在Windows上運行。我打開文件,只看到一個H文件。所以你認爲它可能取決於系統? – 2011-05-22 10:04:02

回答

0

已解決:pico顯示h^@ 10 - 所以nul終於寫完了 - 所以它是「WinSCP的內部文本編輯器」。對我來說仍然是一個謎。

(回答的提示中的註釋 - 仍如果有人可以證實這一點對我來說,所以我可以100%肯定......)