2014-10-21 3 views
-2

Я создаю сервер/клиент. Clent отправляет сообщение на сервер, который хранит его в файле. Чем клиент может прочитать это сообщение. Итак, я использую только следующие функции (плюс привязка и т. Д.): Fgets, read (оба для чтения из сокета и файла) write (для записи на файлы/сокет). И printf для печати.Printf prints old buffer - C

Странно, что когда я вызываю printf, бывает, что он печатает старый текст. Так, например, если я решил удалить все сообщение, я получу с сервера строку типа «файл удален». Затем в следующем действии, когда есть printf, случается, что он печатает содержимое desider плюс часть предыдущего pessage, например «file dele». Как это возможно? Что я должен проверить в своем коде? Я получаю все правильно, не используя такие вещи, как fflush (stdout) ;.

+7

Это совершенно невозможно ответить с кодом, на который нужно смотреть. – aruisdante

+0

Это может быть простая буферизация, и в этом случае 'fflush (stdout);' будет делать трюк. Убедитесь, что ваши строки заканчиваются символом '\ n'. – Wolph

+0

Покажите нам некоторый код, часть, которая извлекает данные для печати. В противном случае мы ничего не знаем. –

ответ

1

Вы должны проверить правильность термина «\ 0».

-1

Попробуйте использовать printf() с "\ n" в начале и в конце i.e, printf ("\ n ******* ur data ***** \ n"); или использование printf ("\ n"); в конце ур-блока, чтобы все печаталось до того, как вы начнете печатать новый.

+0

«u» не «вы». SO не чат. –