Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
 Аватар для prog63
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77

Посимвольное считывание из файла в char-массив

05.05.2014, 22:08. Показов 4028. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делал что-то похожее :
C++
1
2
3
4
5
6
7
8
AnsiString str;
char s[10240];
Form1->Memo1->Lines->LoadFromFile(имя файла);
for(int i=0;i<Form1->Memo1->Lines->Count;i++){
str=Memo1->Lines->Strings[i];
int l=str.Length();
for(int j=0;j<l;j++){
strcpy(s,str.c_str());}}
Но все таки хотелось бы сделать в консольном режиме, а там про Memo даже не слыхали
Должно выйти что-нибудь такое :
C++
1
2
3
4
char a[10240];
FILE *FileIn;
FileIn.fopen(имя файла,rb);
while !eof(FileIn){fread(a,1,1,FileIn);}
Ну и запись в файл тоже надо как-то организовать.

Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2014, 22:08
Ответы с готовыми решениями:

Посимвольное считывание с файла и запись в массив
Всем привет, подскажите, правильно ли я выполняю посимвольное(Нужно считывать, не зная заранее сколько символов считаешь) считывание с...

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

Считывание из файла в массив char
Всем привет , нужно считать из файла типа { node: 23421341 node: 234234123 node: 35fsdfsdf0 node: dgdsfgsfdg } в массив char...

11
25 / 25 / 14
Регистрация: 05.05.2014
Сообщений: 115
05.05.2014, 23:09
1. Можно выдрать из файла в string, a дальше в массив char:
C++
1
2
3
4
5
6
7
8
9
10
#include <string>
#include <fstream>
 
void main(){
        std::string data = "";              // данные
        std::string file = "output.txt";            // имя файла
        std::ifstream out_file(file);
        out_file >> data;                   // file to string
        out_file.close();
}
2. Запись string в файл:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <string>
#include <fstream>
 
 
void main(){
    std::string data = "asdasdasd";     // данные
    std::string file = "output.txt";            // имя файла
    std::ofstream out_file(file);
    out_file << data;                   // string to file
    out_file.close();
}
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
06.05.2014, 07:58
C++
1
2
3
4
5
6
 int fh=FileOpen("èìÿ ôàéëà", fmOpenRead);
 int fsize=FileSeek(fh,0,2);
 char *buffer = new char[fsize];
 FileSeek(fh,0,0);
 FileRead(fh, buffer, fsize);
 FileClose(fh);
Запись аналогично FileWrite()
1
 Аватар для prog63
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
06.05.2014, 17:29  [ТС]
srin, файл предположительно будет очень большой, а string ведь не резиновый...
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
06.05.2014, 17:38
prog63 Насколько файл большой и какие действия будут предприниматься с прочитанным буфером?
0
 Аватар для prog63
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
06.05.2014, 18:16  [ТС]
kzru_hunter, файл может быть больше 30 мб
операции с буфером: поиск и замена символов, копирование в другие массивы, проверка совпадения(вхождения другого массива в буфер), запись в файл и многое другое
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
06.05.2014, 18:45
Цитата Сообщение от prog63 Посмотреть сообщение
проверка совпадения(вхождения другого массива в буфер)
ну тут по-моему только с помощью отображения файла на память; вприципе не сложно, нужно использовать функци CreateFileMapping, MapViewOfFile, UnMapViewOfFile, CloseHandle (описание на msdn'е)

Цитата Сообщение от prog63 Посмотреть сообщение
поиск и замена символов
замена на то же кол-во символов? если нет, то тут я затрудняюсь чего либо советовать.
0
 Аватар для prog63
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
08.05.2014, 08:56  [ТС]
Цитата Сообщение от mimicria Посмотреть сообщение
Запись аналогично FileWrite()
С записью тоже проблемы...
C++
1
2
3
4
5
int FileOut=FileOpen(FileOutName,fmOpenWrite);
int foutsize=FileSeek(FileOut,0,2);
FileSeek(FileOut,0,0);
FileWrite(FileOut, buffer, foutsize);
FileClose(FileOut);
Такой код файл просто не создает
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
08.05.2014, 09:15
C++
1
2
3
4
int FileOut=FileCreate(FileOutName);
// bufsize вы должны вычислить до этого, это размер буфера записи, а не созданного пустого файла
FileWrite(FileOut, buffer, bufsize);
FileClose(FileOut);
0
 Аватар для prog63
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
08.05.2014, 19:28  [ТС]
Цитата Сообщение от mimicria Посмотреть сообщение
bufsize вы должны вычислить до этого, это размер буфера записи, а не созданного пустого файла
Точно.

Добавлено через 2 часа 56 минут
Цитата Сообщение от mimicria Посмотреть сообщение
int FileOut=FileCreate(FileOutName);
// bufsize вы должны вычислить до этого, это размер буфера записи, а не созданного пустого файла
FileWrite(FileOut, buffer, bufsize);
FileClose(FileOut);
Есть одна проблема: что бы я не ложил в ячейки массива ('\n' , '\r' , '\n\r' , '\r\n' или '0'), никаких отдельных строк в файле не наблюдается- т.е. символ перевода строки просто игнорируется.
В чем проблема ?
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
08.05.2014, 19:46
Там всё остальное текстовые данные?
Может тогда нет смысла заморачиваться с массивом байт и пользоваться строками?
0
 Аватар для prog63
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
08.05.2014, 21:44  [ТС]
Такой код тоже не помог :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if (FileExists(FileOutName)){std:remove(FileOutName);}
ofstream FileOutCL(FileOutName);FileOutCL.close();
ofstream FileOutACL;
int regold=0;
for (int reg=0;reg<=finsize;reg++){if ((int)BufferIn[reg]==10){
char* BufferOut=new char[reg-regold-1];
for(int reg2=0;reg2<reg;reg2++){BufferOut[reg2]=BufferIn[reg2+regold];}
FileOutACL.open(FileOutName,ios::app);FileOutACL<<"\n";FileOutACL.close();
int FileOut=FileCreate(FileOutName);
FileWrite(FileOut, BufferOut, reg-regold-1);
FileClose(FileOut);
regold+=reg+1;
}}
Добавлено через 2 минуты
Цитата Сообщение от mimicria Посмотреть сообщение
Там всё остальное текстовые данные?
Может тогда нет смысла заморачиваться с массивом байт и пользоваться строками?
Во первых, строки работают медленнее, чем массивы.
Во вторых, для последующих операций потребуется именно массив.
В третьих, строки не резиновые
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.05.2014, 21:44
Помогаю со студенческими работами здесь

Считывание из файла в char' овский массив
Да вопрос боян, но у меня почему-то все символы программа считывает, как один и тот же символ. Дайте пожалуйста код, который считает в...

Посимвольное считывание файла
Как считать файл посимвольно? Файл состоит из 1-й строки и включает в себя цифры разделённые пробелами. Если можно, то приведите аналогию...

Посимвольное считывание из файла
Сообствено, задание: посимвольно считать данные из файла f и записать их также посимвольно в файл g. Помогите реализовать. Я вот набросал,...

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

Посимвольное считывание из файла.
Как по символьно считывать данные из файла? Добавлено через 32 минуты или это сделать не возможно?


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru