Как записать в конец файла c
Перейти к содержимому

Как записать в конец файла c

  • автор:

Как записать в конец файла c

При работе с текстовыми файлами граздо проще работать с данными не как с отдельными символами, а как со строками с помощью функций fgets() и fputs() .

Запись текстового файла

Функция fputs() записывает в файл строку, то есть набор символов, который завершается символом ‘\0’. Она имеет следующий прототип:

int fputs(const char *s, FILE *stream);

Первый параметр функции — записываемая строка, а второй — указатель на файловый поток. В качестве результата функция возвращает неотрицательное целое число. При ошибках в процессе записи возвращается значение EOF .

При записи строки нулевой символ ‘\0’ в файл не записывается.

Например, запишем строку в файл:

#include int main(void) < // строка для записи char * message = "Hello METANIT.COM!\nAn apple a day keeps the doctor away"; // файл для записи char * filename = "data.txt"; // запись в файл FILE *fp = fopen(filename, "w"); if(fp) < // записываем строку fputs(message, fp); fclose(fp); printf("File has been written\n"); >>

Запись довольно проста: открываем файл на запись и с помощью вызова fputs(message, fp) записываем в файл искомую строку.

Чтение текстового файла

Функция fgets() считывает из файла одну строку и имеет следующий прототип:

char * fgets(char *s, int n, FILE *sream);

Первый параметр char *s представляет строку, в которую производится считывание. Второй параметр — число n указывает, сколько символов необходимо считывать. И третий параметр представляет файловый поток, из которого производится считывание.

При вызове функция считывает из файла не более n-1 символов. Функция прекращает чтение, когда прочтет n-1 символов или встретит символ переноса строки \n. Все считанные символы записываются в строку s, в том числе символ \n. И также конец каждой строки дописывается нулевой символ ‘\0’.

При успешном завершении функция возвращает указатель s , а при ошибке или достижении конца файла возвращается значение NULL .

Считаем данные из выше записанного файла «data.txt»:

#include int main(void) < // файл чтения char * filename = "data.txt"; // буфер для считавания данных из файла char buffer[256]; // чтение из файла FILE *fp = fopen(filename, "r"); if(fp) < // пока не дойдем до конца, считываем по 256 байт while((fgets(buffer, 256, fp))!=NULL) < printf("%s", buffer); >fclose(fp); > >

Здеcь открываем файл на чтение и в цикле считываем из файла по 256 символов и выводим их на консоль с помощью вызова fgets(cc, 256, fp) . Когда данные в файле закончатся, функция возвратит NULL, и произойдет выход из цикла.

Копирование файлов

Другой пример работы с текстовыми файлами — копирование содержимого из одного файла в другой:

#include int main(void) < char * filename1 = "data1.txt"; char * filename2 = "data2.txt"; char buffer[256]; FILE *f1 = fopen(filename1, "r"); // файл на чтение FILE *f2 = fopen(filename2, "w"); // файл на запись if(!f1 || !f2) < printf("Error occured while opening file\n"); >else < // пока не дойдем до конца, считываем по 256 байт из файла f1 while((fgets(buffer, 256, f1))!=NULL) < // записываем строку в файл f2 fputs(buffer, f2); printf("%s", buffer); >> fclose(f1); fclose(f2); return 0; >

Запись в конец файла c++

Здравствуйте, я сделал запись в файл с одного класса, но нужно дописать в этот же файл результаты из второго класса, результаты накладываются и в итоге в файле только результаты работы второго класса. Как сделать запись в конец файла? Мы используем ios_base::app. Спасибо Brave_Lime за ответ.

 std::ofstream vmdelet_out; //создаем поток vmdelet_out.open("file.txt", std::ios::app); // открываем файл для записи в конец vmdelet_out  

Отслеживать

задан 8 мая 2017 в 16:49

355 1 1 золотой знак 7 7 серебряных знаков 23 23 бронзовых знака

покажите код всего этого

8 мая 2017 в 16:53

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Запись

std::ofstream vmdelet_out; //создаем поток vmdelet_out.open("file.txt", std::ios::app); // открываем файл для записи в конец vmdelet_out  

Построчное чтение

#include #include #include int main(void) < std::fstream f; // создаем поток f.open("file.txt", std::ios::in); // открываем файл для чтения if (f) // если файл открылся < std::string buf; // создаем буфер, куда будет считываться информация while (getline(f, buf)) // Пока мы получили строку - тело цикла исполняется || когда файл закончился (все строки считались) - цикл false < std::cout > > 

Поставить курсор в конец файла и записать строку

Author24 — интернет-сервис помощи студентам

Как правильно написать код, чтобы курсор становился в конец файла, и туда можно было что то записать строку, а если фаил пуст, то запись в фаил производилась бы с начала.

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как записать строку не в конец файла
Мне необходимо записать строку не в конец файла, а допустим в какую-то произвольную строку. Как это.

Записать юникод строку в конец файла
Внезапно возник ступор с тривиальной задачей. Необходимо записать юникод-строку в конец текстового.

Работа с файлами: записать в конец файла строку символов
Помогите дописать код! Изначально задача звучит так: Составить программу, осуществляющую открытие.

При клике на input поставить курсор в конец строки
Как при помощи jquery поставить курсор в конец строки?

838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409

Лучший ответ

Сообщение было отмечено Памирыч как решение

Решение

1 2 3 4
FILE* fp = fopen("file.txt", "a"); fputs("* * * CYBERFORUM * * *", fp); //. fclose(fp);

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как можно записать строку в конец файла, чтобы данные которые были в нем не стерлись?
Подскажит, как на С++ можно записать строку в конец файла, чтобы данные которые были в нем не.

После клика текст вставляется но курсор стоит в начале текста, кто знает как поставить в конец
<script type="text/javascript"> <!-- function replaceSelectedText(obj,cbFunc) < obj.focus(); .

Как в компоненте DataGridView поставить курсор на нужную строку?
Подскажите мне, как в компоненте DataGridView поставить курсор на нужную строку 🙂

Поставить курсор файла в начало
Я читаю весь файл и перемещаю курсор в его начало. После пытаюсь прочитать его снова, но вместо.

Или воспользуйтесь поиском по форуму:

Как записать в конец файла c

Работа с бинарными файлами производится посредством посимвольного чтения-записи. Поскольку один объект char соответствует одному байту, то фактически речь идет о побайтовых записи/чтения.

Запись файла

Для записи символа в файл применяется функция putc() , которая имеет следующий прототип:

int putc(int c, FILE *stream);

В качестве параметров в функцию передаются указатель на файловый поток и символ, который надо записать. Результатом функции является записанный символ.

#include int main(void) < // записываемая строка char message[] = "Hello METANIT.COM!"; // файл для записи char * filename = "data.txt"; // находим длину записываемой строки int n = sizeof(message)/sizeof(message[0]); FILE * fp= fopen(filename, "w"); if(fp) < // посимвольно записываем в файл for(int i=0; i < n; i++) < putc(message[i], fp); >fclose(fp); printf("File has been written\n"); > >

Здесь мы пробегаемся по массиву символов message и каждый из них заносим в файл data.txt (который располагается в текущей папке), передавая каждый символ в функцию putc() .

Чтение файла

Для чтения одного символа применяется функция getc() (функция fgetc() аналогична). Она имеет следующий прототип:

int getc(FILE *stream);

В качестве параметра в функцию передается указатель на файловый поток, а возвращаемым значением является считанный из файла символ, точнее его числовой код.

При чтении из файла и записи в него одного символа указатель текущей позиции в потоке увеличивается, обеспечивая тем самым продвижение по файлу.

Считаем ранее записанный файл data.txt :

#include int main(void) < // символ для считывания char c; // файл для чтения char * filename = "data.txt"; FILE * fp= fopen(filename, "r"); if(fp) < // считываем посимвольно из файла while((c=getc(fp))!= EOF) < printf("%c", c); >fclose(fp); > >

Здесь считываем по одному символу из файла через вызов getc() . Здесь стоит обратить внимание на процесс считывания файла. Когда будет достигнут конец файла, функция getc() возвратит значение EOF ("end of file" - конец файла)., которое определено в файле stdio.h. Поэтому мы можем считывать файл, пока не получим значение EOF.

В итоге на консоль будет выведено ранее записанное сообщение.

Добавить комментарий

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