Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
VladSharikov
22 / 22 / 7
Регистрация: 02.12.2010
Сообщений: 824
1

Ввод вывод из/в файлы(и еще пару вопросов)

18.04.2011, 00:22. Просмотров 1282. Ответов 3
Метки нет (Все метки)

Знаю парочку способов ввести/вывести данные из файла не знаю какой из них какой!
В общем я отпишу мысли, а вы скажите верны ли они, у преподавателя(почему не пойму?!) ума не хватило спросить, потому пишу сюда.

Для .txt подходит:
fprintf - форматный ввод в файл
fscanf - собственно вывод форматный

fputc - запись одного символа в файл
fscanf - считывание одного симв из файла

fgets - считывание строки из файла
fputs - запись строки в файл
1. Все вышеописанное ТОЛЬКО для .txt файлов. Так?

ДЛЯ .dat подходит только :
fread -считать
fwrite - записать
2. Верно? Или в дат файл можно записывать еще и через другие функции?

Вообще fwrite/fread вроде бы "байтовое"("битовое") считывание/запись в файл, а все остальное форматная запись. Так?

3. Что возвращает ftell и как можно узнать на какой позиции стоит сейчас "курсор" в файле, чтобы потом через fseek попасть в эту позицию.
Компилятор VS 2010 говорит, прототип ftell такой long ftell(.... ), а fseek(прототип int fseek(.., long _Offset,..)). Как я понимаю, нужно запомнить позицию ftell и потом использовать ее в fseek. Так? Если так (да и если не так, то как?) дайте пожалуйста пример простенький. Хелп программы не помог ничем.

Если что еще напишу !

Добавлено через 14 минут
Уже дополнение

Как поставить указатель на конец файла? Есть задача... при определенных условиях данные надо записать в конец файла(через функцию)
Пример:
C++
1
2
3
4
5
6
7
8
array_proc(int *bufArr, size) {
     FILE *file; fopen_s(&file, "out.dat", "wb"); 
     int i = 0, buffer;
     if(i%2 == 0) {
          buffer = bufArr[i];
          fwrite(&buffer, sizeof(int), 1, file);
     }
     fclose(file);
И еще... если открыть файл в режиме ab(добавление в конец) будет ли работать? 2 и 3 раз понятно будет... А в первый раз, когда файл пустой?
В любом случае, как поставить указатель на конец файла?

Добавлено через 11 часов 48 минут
Ап. Почти разобрался но хотелось бы ваше мнение услышать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2011, 00:22
Ответы с готовыми решениями:

Ifstream и пару вопросов
Пример: я считал файл ifstream in("file.txt")б while(in) { in >> k; ...

Цикл while, пару несложных вопросов
Есть у меня две блок-схемы по ним надо написать программу в первой у меня идёт...

Пару вопросов по двумерным массивам
Преподователь задал вопросы которые поставили меня в ступор. 1. можно ли...

Двоичные файлы, ввод-вывод
Здравствуйте. При компиляции программы вызывается исключение со след. текстом: ...

Двоичные файлы, ввод-вывод
Здравствуйте. Столкнулся с проблемой ввода-вывода в двоичный файл. Вот само...

3
CEBEP
107 / 107 / 23
Регистрация: 21.03.2010
Сообщений: 445
18.04.2011, 04:06 2
a и ab создают файл если его нет и дописывают в конец если есть. если необходимо и читать и записывать в бинарнике то подойдёт rb+. ftell возвращает количество байтов между началом файла и курсором
1
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
18.04.2011, 04:07 3
Функция fseek принимает три аргумента: первый - указатель на файл, второй - насколько "прыгаем", третий - откуда. Третий аргумент может иметь три значения: SEEK_SET - отсчет идет от начала файла, SEEK_CUR - от текущей позиции, SEEK_END - от конца файла. Соотвественно, чтобы установить указатель в конец файла, делаем следующий вызов fseek(file, 0, SEEK_END);
ftell возвращает текущее положение указателя.
1
Choopa
17 / 17 / 5
Регистрация: 03.04.2011
Сообщений: 89
18.04.2011, 05:57 4
#include <fstream>

int main()
{
string a; //объявление строки
char s[256]; //объявление массив символов
ifstream inf; //создоание объекта для работы с файлом
inf.open("c:\\text.txt"); //открытие файла
inf>>a; //чтение до первого пробела или enter
inf.getline(s,sizeof(s)); //чтение строки целиком



ofstream out; //для записифайла
out.open();
out<<a<<endl; //выводит

}
//---------------------------------------------------------------------------
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2011, 05:57

Пару вопросов насчёт ввода массива.
в общем так: действия над матрицами задаю константы, например N=10, M=10,...

Вывод и ввод значений через файлы
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &quot;StdAfx.h&quot; using namespace...

Файловый ввод-вывод.Текстовые файлы
Добрый день! Создать текстовый файл, содержащий символьные значения,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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