Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Глючный fprintf

7.2K
31 июля 2008 года
polaroid
94 / / 05.07.2008
Использую функцию fprintf для вывода в файл, но возникла проблема: не могу сделать нормальное завершение строки (CRLF). Вызываю функцию вот так:
 
Код:
fprintf(f, "%s\n", substring);

НО! Проблема в том, что эта идиотская fprintf зачем-то дублирует символ \n и в итоге получаем строку, оканчивающуюся на CRLFCRLF, т.е. в С-интерпретации это выглядит как: \r\n\r\n. Такие же проблемы наблюдаются у fputs. Подскажите, как это обойти? Компилятор от Майкрософт, система Windows
6.8K
31 июля 2008 года
Аццкий программер
91 / / 27.11.2006
строка была введена с консоли? как? возможно в конце остал символ нажатия энтера - тот самый "\r\n"? Дэбаг надо сделать и память посмареть которая эту строку хранит
7.2K
31 июля 2008 года
polaroid
94 / / 05.07.2008
Строка не из консоли, строку получаю с помощью pre_copy_substring (регулярные выражения). Естественно терминируется нуль символом. Хм, прикол, использую функцию вот так:
 
Код:
fprintf(out, "%s ends\n", substring);


В файле получается:
моя строка endsCRLF
endsCRLF

Что за нах?
274
01 августа 2008 года
Lone Wolf
1.3K / / 26.11.2006
а файл абсолютно чистый создаеш? это наблюдается во все фпринтфах при работе с одним файлом?
288
01 августа 2008 года
nikitozz
1.2K / / 09.03.2007
Выложите побольше кода. Может станет понятней.
7.2K
01 августа 2008 года
polaroid
94 / / 05.07.2008
 
Код:
for (i = 0; i <= matches; i++) {
    memset(substring, 0, MAX_STR);
    pcre_copy_substring(szPage, ovector, matches, i, (char*)substring, MAX_STR);
    fprintf(out, "%s\n", substring);
}


Вот, substring объявлен как char substring[MAX_STR].
#define MAX_STR 512
Может что-то в szPage не так, szPage = malloc(51200); потом в szPage делаю strcat(szPage, recv_str). recv_str в свою очередь получает данные из сокета.
7.2K
01 августа 2008 года
polaroid
94 / / 05.07.2008
Все, разобрался. pcre_copy_substring копирует в строку CRLF, поскольку такой строки не существует, т.е. реальный индекс найденной строки - 0, а в цикле в "i" подставляется единица и из-за этого функция сама туда вставляет CRLF
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог