Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Проблема с fputs


Автор: malor 19.7.2011, 19:55
Код
#define pathLog    "Z:\\LogEvent.txt"    

FILE *pFileLog;
char *strMesg;
int result;

pFileLog = fopen(pathLog, "w");    

...........................

strMesg = "test_record";
result = fputs(strMesg, pFileLog);


result  равен 0, но записи никакой в файле нет. Почему?

Автор: Сыроежка 19.7.2011, 19:59
Цитата(malor @  19.7.2011,  19:55 Найти цитируемый пост)
Выделить всёкод C++

    
#define pathLog    "Z:\\LogEvent.txt"    
FILE *pFileLog;
char *strMesg;
int result;
pFileLog = fopen(pathLog, "w");    
...........................
strMesg = "test_record";
result = fputs(strMesg, pFileLog);


result  равен 0, но записи никакой в файле нет. Почему? 


Первое - это проверьте ferror. Второе, смотрите содержимое файла после его закрытия, так как сразу же данные на диск могут не записываться. К тому же надо проверить, действительно ли у вас открылся файл.

Автор: malor 19.7.2011, 20:15
Так написал:
Код
char *strMesg = "test_record";
int result = fputs(strMesg, pFileLog);
result = ferror(pFileLog);
fclose(pFileLog);
result = ferror(pFileLog);
Проверил содержимое файла после строки 
fclose(pFileLog);
он заполнен. Хорошо, но т.к. я часто буду добавлять туда строки, то наверно лучше поставить 
fflush(pFileLog) ?

Автор: Сыроежка 19.7.2011, 20:23
Цитата(malor @  19.7.2011,  20:15 Найти цитируемый пост)
Так написал:
Выделить всёкод C++
    
char *strMesg = "test_record";
int result = fputs(strMesg, pFileLog);
result = ferror(pFileLog);
fclose(pFileLog);
result = ferror(pFileLog);
Проверил содержимое файла после строки 
fclose(pFileLog);
он заполнен. Хорошо, но т.к. я часто буду добавлять туда строки, то наверно лучше поставить 
fflush(pFileLog) ? 



У вас в коде ошибка. Вы вызываете ferror после того, как уже закрыли файл, а не после записи строки.
Что касается fflush, то не совсем понятно, зачем вам это нужно? Вы хотите после каждой записи визуально убеждаться, что данные физически на диске? 

Автор: malor 19.7.2011, 21:47
>>Что касается fflush, то не совсем понятно, зачем вам это нужно? Вы хотите после каждой 
>>записи визуально убеждаться, что данные физически на диске?  


Во время отладки нужно было посмотреть что пишет.

Автор: baldina 19.7.2011, 23:44
Цитата(g27 @  7.4.2009,  22:23 Найти цитируемый пост)
вообщем вопрос как записать допусти int или вот как щас букву.

g27, попробуй fprintf()

Автор: bsa 19.7.2011, 23:48

 ! 
bsa
malor, для своих вопросов следует создавать новые темы, а не поднимать двух летней давности

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)