2010-11-01 125 views
3

我正在構建一個分佈式消息系統,以便用戶在不同的linux終端上相互發送消息。我正在查看我的問題的場景是,當我嘗試將一個字符串寫入超過4095字節/字符的文本文件時。該字符串將從用戶輸入中生成。我已經讀過最大字符串大小的ISO C99標準是4095字節/字節。我應該限制用戶只輸入一個小於4095字節的字符串嗎?我知道簡單的聊天消息通常很短,但我關心的情況如下。將字符串寫入超過4095個字符的文件

用戶嘗試從某處複製並粘貼摘錄,然後將其發送給其他用戶。如果消息長度超過4095字節,則會在第4095個字符後截斷字符。因此用戶只會收到第一部分。

我不知道這件事,但我想知道如果字符串長度超過4095個字符,我應該採用增加堆棧大小的路線,或者以另一種方式通過某種方式將字符串分開然後將多個字符串逐個寫入文件。

+0

難道你不能只打破了字符串,並寫在零件? – GWW 2010-11-01 03:26:34

+0

你在哪裏閱讀關於這個尺寸限制? – sth 2010-11-01 03:29:18

回答

10

該限制在字符串文字上,如"hello world"。這不是對您以編程方式構建的字符串的一般限制。你可以製作很多字符串,比4095字節大得多!

+1

+1用於確定數字來自哪裏。 – egrunin 2010-11-01 04:03:06

+0

源代碼行的C99中也有4096個字符限制 - 這是C89中的510個字符。當然,這些都不會限制內存中字符串的大小或文件的內容。 – 2010-11-09 09:39:45

1

使用所謂的「緩衝區」並一次寫入4095個字節。我不是C程序員,所以我現在無法想到緩衝輸出功能,但它存在。