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

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

05.05.2014, 22:08. Показов 4018. Ответов 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
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru