Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kosmonaftus
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 33
#1

Функция логирования в txt файл - C++

22.11.2013, 15:13. Просмотров 485. Ответов 12
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <stdio.h>
using namespace std;
 
 
char sContent;
char sFileLog = "log.txt";
bool iTrigerlogfile = 1;
 
Fwrite_file (int iTrigerlogfile, char sContent,char sFilename);
 
int main(){
    Fwrite_file (iTrigerlogfile,"test",sFileLog);
    return 0;
}
 
bool Fwrite_file (int iTrigerlogfile, char sContent,char sFilename){
    if (trigerlogfile){
        FILE* out = fopen(file, "w");
        fprintf(out, "%s\n", content);
        return fclose(out);
    }
}
Что я сделал не так? Показывает ошибки инициализации
(7) : error C2440: 'initializing' : cannot convert from 'char [8]' to 'char'
(13) : error C2664: 'Fwrite_file' : cannot convert parameter 2 from 'char [5]' to 'char'
(19) : error C2556: 'bool __cdecl Fwrite_file(int,char,char)' : overloaded function differs only by return type from 'int __cdecl Fwrite_file(int,char,char)'
....

и их куча.

И второй вопрос, как к content переменной пристыковать дату?
те data()." - ".content (напишу как в php чтоб понятнее было)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 15:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция логирования в txt файл (C++):

В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt - C++
Программным путем: 1. В папке С:\temp создайте папки К1 и К2. 2. В папке К1: a) создайте файл t1.txt, в который запишите следующий...

Переписать все числа из файлов 1.txt и 2.txt в файл 3.txt - C++
Здравствуйте! Нужна помощь. Есть два текстовых файла 1.txt и 2.txt в них есть числа. реализовать консольное приложение которое...

Найти минимальное и максимальное числа из input.txt и записать его в файл output.txt - C++
Еще раз приветствую дорогие программисты.Надеюсь на вашу помощь. Найти минимальное и максимальное числа из input.txt и записать его в...

Переписать данные файла input.txt в файл output.txt, отсортировать их в алфавитном порядке по фамилии - C++
Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не...

Исправить программу, чтоб считывала текст из файла Input.txt и выводит в файл Output.txt - C++
Даны координаты центра и радиус R окружности, координаты точки. Найти точки пересечения касательных с окружностью input.txt 1 1 1 2 2...

Считать 10 целых чисел с файла 1.txt и записать в файл 2.txt максимальный элемент и его индекс - C++
нужно считать 10 целых чисел с файла 1.txt и записать в файл 2.txt максимальный элемент и его индекс я начала делать, но в файл 2.txt...

12
newbie666
Заблокирован
22.11.2013, 15:26 #2
Цитата Сообщение от Kosmonaftus Посмотреть сообщение
(7) : error C2440: 'initializing' : cannot convert from 'char [8]' to 'char'
(13) : error C2664: 'Fwrite_file' : cannot convert parameter 2 from 'char [5]' to 'char'
(19) : error C2556: 'bool __cdecl Fwrite_file(int,char,char)' : overloaded function differs only by return type from 'int __cdecl Fwrite_file(int,char,char)'
у тебя функции принимают по одному символу, а ты видать хочешь туда загнать строчки с файл нэйм, путём и тд

Добавлено через 19 секунд
тебе лог нужен?
0
Kosmonaftus
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 33
22.11.2013, 15:27  [ТС] #3
да я пишу функцию логирования ошибок
0
newbie666
Заблокирован
22.11.2013, 15:30 #4
на Qt подойдёт?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void WriteLog( QString msg )
{
    QTime t = QTime::currentTime();
    QDate d = QDate::currentDate();
    QString datePart = QString("%1-%2-%3 %4:%5:%6:%7").arg(d.year()).arg(d.month()).arg(d.day()).arg(t.hour()).arg(t.minute()).arg(t.second()).arg(t.msec());
 
    QString fileName = "";
    if(logFilePath.simplified() > 0)
        fileName += logFilePath;
 
    QString logsDir = "\\logs\\";
    QDir dir;
    dir.mkpath(QString(logFilePath + logsDir));
    fileName += logsDir;
    QString tmp = QString("%1-%2-%3.txt").arg(d.year()).arg(d.month()).arg(d.day());
    fileName += tmp;
    
    QFile file(fileName);
    if (!file.open( QIODevice::Append | QIODevice::Text) )
        return;
    QTextStream out(&file); 
    out << datePart << endl << msg << endl;
    out << endl;
    file.close();
}
Добавлено через 1 минуту
Где logFilePath предварительно заданная переменная или же передавай её в функцию

Добавлено через 1 минуту
наверное с Qt ты не знаком, тогда рассказывай, что и как ты хочешь выводить в лог - я тебе накидаю ...
0
Kosmonaftus
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 33
22.11.2013, 15:52  [ТС] #5
Цитата Сообщение от newbie666 Посмотреть сообщение
на Qt подойдёт?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void WriteLog( QString msg )
{
    QTime t = QTime::currentTime();
    QDate d = QDate::currentDate();
    QString datePart = QString("%1-%2-%3 %4:%5:%6:%7").arg(d.year()).arg(d.month()).arg(d.day()).arg(t.hour()).arg(t.minute()).arg(t.second()).arg(t.msec());
 
    QString fileName = "";
    if(logFilePath.simplified() > 0)
        fileName += logFilePath;
 
    QString logsDir = "\\logs\\";
    QDir dir;
    dir.mkpath(QString(logFilePath + logsDir));
    fileName += logsDir;
    QString tmp = QString("%1-%2-%3.txt").arg(d.year()).arg(d.month()).arg(d.day());
    fileName += tmp;
    
    QFile file(fileName);
    if (!file.open( QIODevice::Append | QIODevice::Text) )
        return;
    QTextStream out(&file); 
    out << datePart << endl << msg << endl;
    out << endl;
    file.close();
}
Добавлено через 1 минуту
Где logFilePath предварительно заданная переменная или же передавай её в функцию

Добавлено через 1 минуту
наверное с Qt ты не знаком, тогда рассказывай, что и как ты хочешь выводить в лог - я тебе накидаю ...

да блин Шилдт не писал пока об этом, ну или я не дошел . Мне надо значть как поправить мой код чтоб он работал Хотя бы начать с этого
0
newbie666
Заблокирован
22.11.2013, 16:00 #6
Цитата Сообщение от Kosmonaftus Посмотреть сообщение
да блин Шилдт не писал пока об этом, ну или я не дошел . Мне надо значть как поправить мой код чтоб он работал Хотя бы начать с этого
пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include <stdio.h>
using namespace std;
 
 
char sContent;
char *sFileLog = "log.txt";
bool iTrigerlogfile = 1;
 
bool Fwrite_file (int iTrigerlogfile, char *sContent,char *sFilename);
 
int main(){
    Fwrite_file (iTrigerlogfile,"test",sFileLog);
    return 0;
}
 
bool Fwrite_file (int iTrigerlogfile, char *sContent,char *sFilename){  
 
    if (iTrigerlogfile){ 
        FILE* out = fopen(sFilename, "w");
        fprintf(out, "%s\n", sContent);
        return fclose(out);
    }
    return true;
}
плюсик ставится под ником
1
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,375
22.11.2013, 16:04 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <stdio.h>
using namespace std;
 
const char* sContent;
const char* sFileLog = "log.txt";
bool iTrigerlogfile = 1;
 
bool Fwrite_file (int iTrigerlogfile, const char* sContent, const char* sFilename);
 
int main(){
    Fwrite_file (iTrigerlogfile, "test", sFileLog);
    return 0;
}
 
bool Fwrite_file (int iTrigerlogfile, const char* sContent, const char* sFilename){
    if (trigerlogfile){
        FILE* out = fopen(file, "a");  // w - перезаписать файл, a - дополнять файл
        fprintf(out, "%s\n", content);
        return fclose(out);
    }
}
0
newbie666
22.11.2013, 16:09
  #8

Не по теме:

я первый, я первый

2
CheshireCat
22.11.2013, 16:15
  #9

Не по теме:

Опередил :-)

0
Kosmonaftus
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 33
22.11.2013, 17:07  [ТС] #10
понял что надо читать дальше, не могу понять пока что такое указатели вообще на кой они нужны если есть перменная как есть
0
Kosmonaftus
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 33
24.11.2013, 02:24  [ТС] #11
Спасибо всем кто мне помогал , в связи с вашими правками пришлось потратить два дня на изучение указателей и понять что вы char* sFileLog = "log.txt"; создали массив по сути. Ну теперь я знаю что любые строковые значения нужно присваивать только через указатели.
Функция заработала, я малость ее изменил даже:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <stdio.h>
using namespace std;
 
char* sFileLog = "log.txt";
bool iTrigerlogfile = true;
 
void Fwrite_file (int iTrigerlogfile, char *sContent,char *sFilename);
 
int main(){
    Fwrite_file (iTrigerlogfile,"test",sFileLog);
    return 0;
}
 
void Fwrite_file (int iTrigerlogfile, char *sContent,char *sFilename){
    if (iTrigerlogfile){
        FILE* out = fopen(sFilename, "a+");
        fprintf(out, "%s\n", sContent);
        fclose(out);
    }
}
Теперь мне нужно добавить дату перед sContent!
И еще хотелось бы уточнить такую вещь, почему при компиляции получается такой огромный размер exe 238кб? Если я хочу чтоб размер был 28кб ведь я не так много написал кода!
0
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,375
26.11.2013, 15:13 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <time.h>
 
 
void Fwrite_file (int iTrigerlogfile, const char *sContent, const char *sFilename){
    if (iTrigerlogfile){
        FILE* out = fopen(sFilename, "a+");
        time_t currTime = time(NULL);
        struct tm* localTime = localtime (&currTime);
        fprintf(out, "%d-%d-%d  %s\n", localTime->tm_mday, localTime->tm_mon + 1, localTime->tm_year + 1900, sContent);
        fclose(out);
    }
}
1
Kosmonaftus
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 33
26.11.2013, 21:58  [ТС] #13
C++
1
time_t currTime = time(NULL);
создаем переменную currTime типа time_t и присваиваем ей ... не понимаю что почему NULL

C++
1
tm *localTime = localtime (&currTime);
создаем ссылку на localtime(&currTime) ... зачем &currTime .... я запутался вообще
а можно пояснить словами эти две строчки? И зачем там были структуры?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2013, 21:58
Привет! Вот еще темы с ответами:

отладить программу на языке С++, которая считывает из файла a.txt строку и записывает её в файл b.txt в обратном порядке - C++
я это взяла из книги полностью готовый код, а он не идёт.Помогите отладить, пожалуйста #include &lt;string.h&gt; #include &lt;stdlib.h&gt; ...

Прочитать txt и записать в другой txt файл - C++
Вот у меня например текстовый файл(Это 1 задание, осилил как-то), туда записан список студентов., мне нужно его прочитать (уже 2 задание)и...

В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию - C++
Добрый вечер!!! Я - новичок по работе с С++, помогите, пожалуйста, написать программу на этом языке. В файле input.txt содержатся сведения...

Сформировать из файла f4.txt файл g.txt - C++
Сформировать из файла f4.txt файл g.txt, состоящий из целых чисел, но для нечётных чисел указать также их значение английским словом 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
26.11.2013, 21:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru