Russian Qt Forum

Qt => Общие вопросы => Тема начата: Sandr от Ноябрь 13, 2010, 18:45



Название: Создание txt файла
Отправлено: Sandr от Ноябрь 13, 2010, 18:45
Как видно из кода, он должен создавать файл и записывать в него данные, но кьют выкидывает уйму ошибок.. Скажите пжл, что нужно исправить? Где можно почитать материал на эту тему?

#include <iostream>
#include <conio.h>
int main()
{
FILE * fo;
fo = fopen("test.txt","wt");
int i;
for( i=0; i<100; i++)
 {
  fprintf( fo, "%d\n", i );
 }
fclose(fo);
if(fo == true)
    {
     std::cout<<"file created";
    }
 else
    {
     std::cout<<"error!";
    }

Sleep(5000);
}



Название: Re: Создание txt файла
Отправлено: noirhor от Ноябрь 13, 2010, 19:08
Казалось бы, причем здесь Qt?
Где можно почитать материал на эту тему?
http://doc.qt.nokia.com/4.7/qfile.html (http://doc.qt.nokia.com/4.7/qfile.html)


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 13, 2010, 19:27
забыл уточнить. Где можно почитать этот материал на русском?


Название: Re: Создание txt файла
Отправлено: Alex Custov от Ноябрь 14, 2010, 00:02
#include <conio.h>

О, боги :D


Название: Re: Создание txt файла
Отправлено: tim474 от Ноябрь 14, 2010, 03:21
А причём здесь Qt? В том куске кода ни одного обращения к библиотекам Qt нету.


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 14, 2010, 13:50
Alex Custov, это стало модным да? В темах, где новичёк задаёт вопрос или описыват проблему, смеяться? Ну да, я ошибся, перепутал conio.h с Windows.h и теперь надо смеяться? Лучшеб помог или вобще ничё не писал, оффтопщик фигов!!!
+++
tim474, будь добр, помоги исправить? Я нашёл этот код в сети и немного переделал, но как оказалось он совершенно не подходит.
Может у кого нибудь есть простые примеры, касающиеся моего вопроса?


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 14, 2010, 14:53
Немного исправил код:

#include <iostream>
#include <Windows.h>
#include <QFile>

int main()
{
FILE * fo;
fo = fopen("C:\\test.txt","wt");
int i;
for( i=0; i<100; i++ )
 {
  fprintf( fo, "%d\n", i );
 }
fclose(fo);

 Sleep(5000);
}

Ошибок не выдаёт, но файл не создаётся


Название: Re: Создание txt файла
Отправлено: merke от Ноябрь 14, 2010, 16:15
Вопрос: тебе нужно реализовать на С++ или же на Qt, если же на Qt то кури справку по QFile или QTextStream & QDataStream


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 14, 2010, 16:48
и так и так желательно


Название: Re: Создание txt файла
Отправлено: tim474 от Ноябрь 14, 2010, 17:18
Цитировать
Немного исправил код:
И зачем тогда там заголовок QFile, если он ни разу не используется? А уж зачем conio.h,  wondows.h и sleep — вообще непонятно. По делу — попробуй подключить <stdio.h>, а также вместо "wt" попробуй просто "w".

ЗЫ: это будет работа с файлами при помощи средств языка C. Если не стоит требование, что надо использовать чистый C, то лучше пользоваться более удобными средствами стандартной библиотеки C++ (http://www.cplusplus.com/reference/iostream/fstream/)


Название: Re: Создание txt файла
Отправлено: ufna от Ноябрь 14, 2010, 17:24
Может стоит по строчкам разобраться что делается и посмотреть документацию по QFile? (а сразу видно что не смотрел)


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 14, 2010, 17:40
tim474, Windows.h нужен чтоб Sleep(5000); работал.
<stdio.h> подключил - без изменений.


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 14, 2010, 17:41
ufna, на английском я плохо читаю


Название: Re: Создание txt файла
Отправлено: ufna от Ноябрь 14, 2010, 17:52
плохо или нет - но ведь даже не взглянул, а там все есть как примеры к классу :)

http://crossplatform.ru/ - здесь есть на русском частично


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 14, 2010, 18:30
взглянул, но практически ничего не понял((

Можешь написать пример? Я на примерах просто лучше понимаю


Название: Re: Создание txt файла
Отправлено: tim474 от Ноябрь 14, 2010, 18:53
tim474, Windows.h нужен чтоб Sleep(5000); работал.
А зачем там Sleep(5000)? Тем более, если ты собираешься использовать Qt, то там есть свои средства работы со временем. Зачем использовать вендоузячьи?


Название: Re: Создание txt файла
Отправлено: tim474 от Ноябрь 14, 2010, 18:57
А если попробовать вместо C:\\test.txt указать относительный путь, например, просто test.txt, чтобы в той же папке файл создался? Просто у меня этот код заработал, но путь пришлось изменить, т.к никакого диска C у меня нету :)


Название: Re: Создание txt файла
Отправлено: ufna от Ноябрь 14, 2010, 19:43
Третья ссылка в гугле, первая - русскоязычная

http://wiki.forum.nokia.com/index.php/Работа_с_файлами_в_Qt_(QFile)


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 14, 2010, 21:47
tim474, Windows.h нужен чтоб Sleep(5000); работал.
А зачем там Sleep(5000)? Тем более, если ты собираешься использовать Qt, то там есть свои средства работы со временем. Зачем использовать вендоузячьи?


мне ими проще..


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 14, 2010, 21:48
А если попробовать вместо C:\\test.txt указать относительный путь, например, просто test.txt, чтобы в той же папке файл создался? Просто у меня этот код заработал, но путь пришлось изменить, т.к никакого диска C у меня нету :)

сделал, получилось, но файл пустой(


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 14, 2010, 21:52
Третья ссылка в гугле, первая - русскоязычная

http://wiki.forum.nokia.com/index.php/Работа_с_файлами_в_Qt_(QFile)



Для работы с файлами в проекте необходимо подключить библиотеку:
#include <QFile>

Для взаимодействия с файлами используются методы доступа к файлам:
 QIODevice::ReadOnly    Открыть файл для чтения
 QIODevice::WriteOnly   Открыть файл для записи (таким методом можно просто создать файл)
 QIODevice::ReadWrite   Открыть файл для чтения и записи
 QIODevice::Append      Открыть файл для дополнения файла в конец

Пример записи файла:
QFile file("c://test.txt");
file.open(QIODevice::Append | QIODevice::Text);
QTextStream out(&file);
out << temp;
out << "\n";
file.close();

Не забывайте закрывать файлы после работы с ними командой:
file.close();


я вот это не понял file.open(QIODevice::Append | QIODevice::Text);


Название: Re: Создание txt файла
Отправлено: tim474 от Ноябрь 14, 2010, 22:56
tim474, Windows.h нужен чтоб Sleep(5000); работал.
А зачем там Sleep(5000)? Тем более, если ты собираешься использовать Qt, то там есть свои средства работы со временем. Зачем использовать вендоузячьи?


мне ими проще..
А зачем он здесь? Точного аналога Sleep нету (хотя приблизительные есть), но зачем он здесь?


Название: Re: Создание txt файла
Отправлено: Nimbus от Ноябрь 15, 2010, 05:37
я вот это не понял file.open(QIODevice::Append | QIODevice::Text);
Открываем файл для добавления (а не полной его перезаписи) в него данных в текстовом режиме.


Название: Re: Создание txt файла
Отправлено: kuzulis от Ноябрь 15, 2010, 08:17
2 Sandr,

я конечно понимаю, что раз это раздел для новичков, то тут задают простые вопросы...
Но не до такой же степени то? У тебя вообще, совесть есть? :)

Цитировать
ufna, на английском я плохо читаю
Гугл транслятор в помощь. Человек, который хочет разобраться - разберется.. А отмазы типа "я по буржуинскому не бельме-шельме" не принимаются!

Цитировать
я вот это не понял file.open(QIODevice::Append | QIODevice::Text);
Ну ты уж совсем.. Скажу я тебе...







Название: Re: Создание txt файла
Отправлено: merke от Ноябрь 15, 2010, 09:12
чувак, мой тебе совет, учи c++ сначала, вообще просто синтаксис, к счастью литературы море!

А спрашивать что то на каждом шаге это не дело!


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 15, 2010, 17:09
tim474, Windows.h нужен чтоб Sleep(5000); работал.
А зачем там Sleep(5000)? Тем более, если ты собираешься использовать Qt, то там есть свои средства работы со временем. Зачем использовать вендоузячьи?


мне ими проще..
А зачем он здесь? Точного аналога Sleep нету (хотя приблизительные есть), но зачем он здесь?

Ну, например, в первом посте слип нужен был чтоб задержать вывод инфы о результате работы


Название: Re: Создание txt файла
Отправлено: tim474 от Ноябрь 15, 2010, 19:23
А зачем его задерживать? Здесь лучше getchar(), чтобы остановить выполнение до нажатия enter.


Название: Re: Создание txt файла
Отправлено: Sandr от Ноябрь 15, 2010, 21:42
tim474, я не знал про это.