Запись строки в файл длиной более 4095 символов - PullRequest
3 голосов
/ 01 ноября 2010

Я создаю распределенную систему обмена сообщениями, чтобы пользователи могли отправлять сообщения друг другу на разных терминалах Linux. Сценарий, который я рассматриваю для моего вопроса, - это когда я пытаюсь записать строку в текстовый файл, размер которого превышает 4095 байт / символов. Эта строка будет сгенерирована из пользовательского ввода. Я прочитал, что стандарт ISO C99 для максимального размера строки составляет 4095 байтов / символов. Должен ли я ограничить пользователя только вводом строки длиной менее 4095 байт? Я знаю, что простые сообщения чата, как правило, короткие, но меня интересует следующий сценарий.

Пользователь пытается откуда-то скопировать и вставить отрывок, а затем отправить его другому пользователю. Если бы сообщение было длиннее 4095 байтов, оно урезало бы символы после 4095-го символа. Таким образом, пользователь получит только первую порцию.

Я не уверен в этом, но мне было интересно, стоит ли мне идти по пути увеличения размера моего стека, если строка длиннее, чем 4095 символов, или есть ли другой способ обойти это, каким-то образом разделив строку, когда я принимаю а затем записывать несколько строк в файл по частям.

Ответы [ 2 ]

10 голосов
/ 01 ноября 2010

Это ограничение для строковых литералов, например "hello world".Это не общий предел для строк, которые вы создаете программно.Вы можете создавать строки намного больше, чем 4095 байт!

1 голос
/ 01 ноября 2010

Используйте так называемый «буфер» и записывайте 4095 байт за раз.Я не программист на C, поэтому я не могу сейчас думать о буферизованной функции вывода, но она существует.

...