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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
#1

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

18.04.2011, 00:22. Просмотров 1239. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод вывод из/в файлы(и еще пару вопросов) (C++):

Ifstream и пару вопросов - C++
Пример: я считал файл ifstream in("file.txt")б while(in) { in >> k; cout << k; } после цикла указатель стоит в...

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

Пару вопросов по двумерным массивам - C++
Преподователь задал вопросы которые поставили меня в ступор. 1. можно ли просмотреть все элементы матрицы в одном цикле?как? 2. что...

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

Файловый ввод-вывод.Текстовые файлы - C++
Добрый день! Создать текстовый файл, содержащий символьные значения, следующего формата 'a' '5' 'k' '!' '#' 'v' … Определить...

вывод и ввод значение через файлы - C++
#include <iostream> #include <fstream> #include "StdAfx.h" using namespace std; int main() { int x; ifstream...

3
CEBEP
106 / 106 / 9
Регистрация: 21.03.2010
Сообщений: 440
18.04.2011, 04:06 #2
a и ab создают файл если его нет и дописывают в конец если есть. если необходимо и читать и записывать в бинарнике то подойдёт rb+. ftell возвращает количество байтов между началом файла и курсором
1
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
18.04.2011, 04:07 #3
Функция fseek принимает три аргумента: первый - указатель на файл, второй - насколько "прыгаем", третий - откуда. Третий аргумент может иметь три значения: SEEK_SET - отсчет идет от начала файла, SEEK_CUR - от текущей позиции, SEEK_END - от конца файла. Соотвественно, чтобы установить указатель в конец файла, делаем следующий вызов fseek(file, 0, SEEK_END);
ftell возвращает текущее положение указателя.
1
Choopa
17 / 17 / 0
Регистрация: 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
Привет! Вот еще темы с ответами:

Есть пару вопросов по такой вот проге - C++
#define MY_LINKED_LIST #include &lt;iostream&gt; using namespace std; struct node { int data; node *next; ...

Пару вопросов насчёт блок-схемы (функция) - C++
вначале программы у меня идёт функция потом идёт сама программа + вызов этой функции 1. как должна выглядеть блок-схема самой...

Работа с файлами, ввод и вывод, многостроковые файлы - C++
Есть проблема. Я пытался создать такую программу, смыслом которой является: вывод данных из готового .txt файла, затем запрос ввода, запись...

Сортировка по алфавиту и еще несколько вопросов по С++ - C++
Срочно нужна помощь. 1) Нужно отсортировать по алфавиту массив из n элементов класса string. 2) Как вывести число с определенным...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
18.04.2011, 05:57
Ответ Создать тему
Опции темы

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