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

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

05.05.2014, 22:08. Показов 4048. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru