С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62

Считывание всего файла

11.07.2010, 13:10. Показов 1354. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди подскажите плиз как можно считать весь файл с текстом в массив?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.07.2010, 13:10
Ответы с готовыми решениями:

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

Как эффективнее всего реализовать считывание нужной строки?
Всем привет! Нужно считать определенную строку в файле, допустим 5-ую. Как эффективнее всего это реализовать?

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

13
0 / 0 / 0
Регистрация: 11.07.2010
Сообщений: 39
11.07.2010, 13:55
Как-то наверное так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <fstream>
 
int main()
{
    std::ifstream file("file.txt");
    file.seekg(0, std::ios::end);
    const int MAX = file.tellg();
    file.seekg(0);
    char buffer[MAX+1];
    int counter=0;
    char ch;
 
    while(file.get(ch)) {
        buffer[counter++]=ch;
        if(counter==MAX)
            break;
    }
    buffer[counter]=0;
 
    return 0;
}
0
34 / 34 / 8
Регистрация: 07.06.2010
Сообщений: 118
11.07.2010, 14:02
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <fstream>
#define size 1024
int main()
{
    char arr[size];
    std::ifstream f("Text.txt");
    for(int i=0;(i<size) || (!f.eof()); i++)
        f>>arr[i];
    f.close();
    return 0;
}
Например так
1
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
11.07.2010, 14:25  [ТС]
[Freeman], спасибо.
Я думал что разберусь и С++, но чёт не получается, мне бы тотже код в С.

Добавлено через 9 минут
я понимаю это так, но у меня почемуто он не останавливается в конце файла, в чём ошибка???

C
1
2
3
4
5
6
7
8
9
10
#include"stdio.h"
void main(void){
FILE *f;
char a[32000]={' '},i;
int j=0,k;
f=fopen("10in.txt","rt");
for(j=0;!feof(f);j++){
fscanf(f,"%c",a[j]);
printf("%c",a[j]);}
fclose(f);}
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
11.07.2010, 14:33
Цитата Сообщение от Freeman Посмотреть сообщение
Например так
Можно проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <vector>
#include <iterator>
#include <algorithm>
#include <fstream>
 
int main() {
  std::vector<char> arr;
  std::ifstream     file("filename.ext");
 
  std::copy(std::istream_iterator<char>(file), std::istream_iterator<char>(), std::back_inserter(arr));
 
  return 0;
}
1
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
11.07.2010, 14:36  [ТС]
Может проще, но не для меня)))) я вообще С++ не знаю, проходим С.
0
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
11.07.2010, 14:40
CyBOSSeR, ваш вариант что-то пробельные символы не уважает.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
11.07.2010, 14:45
Хохол, добавь перед копированием
C++
1
file >> std::noskipws;
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
11.07.2010, 14:49
neon902, вот на С
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <stdlib.h>
 
int main(void){
    FILE * f;
    char name[BUFSIZ];
    char * buf;
    long len;
    
    printf("File to open: ");
    if ( scanf("%s", name) != 1 ){
        perror("scanf");
        exit(EXIT_FAILURE);
    }
    
    if ( ( f = fopen(name, "rb") ) == NULL ){
        perror("fopen");
        exit(EXIT_FAILURE);
    }
    
    if ( fseek(f, 0L, SEEK_END) ){
        perror("fseek");
        exit(EXIT_FAILURE);
    }
    
    if ( ( len = ftell(f) ) < 1 ){
        fprintf(stderr, "Bad or empty file!\n");
        exit(EXIT_FAILURE);
    }
    
    rewind(f);
    
    if ( ( buf = (char*)malloc(len + 1) ) == NULL ){
        perror("malloc");
        exit(EXIT_FAILURE);
    }
    
    if ( fread(buf, 1, len, f) != len ){
        fprintf(stderr, "Can't read from file!\n");
        exit(EXIT_FAILURE);
    }
    
    buf[len] = '\0';
    
    if ( fclose(f) )
        perror("fclose");
    
    printf("Content of file %s:\n", name);
    printf("%s\n", buf);
    
    free(buf);
    exit(EXIT_SUCCESS);
}
1
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
11.07.2010, 14:53
CyBOSSeR, не помогло.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
11.07.2010, 15:10
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <vector>
#include <fstream>
#include <iterator>
 
int main()
{        
    std::ifstream file("file.txt");
    file.unsetf(std::ios::skipws);    
    std::vector<char> arr( (std::istream_iterator<char>(file)), (std::istream_iterator<char>()) );    
    
    return 0;
}
0
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
11.07.2010, 15:16
CyBOSSeR, помогло, я проверял криво.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
11.07.2010, 15:16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <fstream>
 
#define MAX_FILE_NAME 1024
 
int main(){
    char name[MAX_FILE_NAME];
    std::cout << "File to open: ";
    std::cin.get(name, MAX_FILE_NAME);
    
    std::ifstream ifs(name, std::ios::binary);
    if ( ! ifs.is_open() ){
        std::cerr << "Can't open file to input!" << std::endl;
        return 1;
    }
    
    std::streamsize len;
    ifs.seekg(0, std::ios::end);
    len = ifs.tellg();
    ifs.seekg(0, std::ios::beg);
    
    char * buf = new char [ len + 1 ];
    ifs.read(buf, len);
    buf[len] = '\0';
    
    ifs.close();
    
    std::cout << "Content of file:" << std::endl;
    std::cout << buf << std::endl;
    
    delete [] buf;
    return 0;
}
0
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
11.07.2010, 15:20  [ТС]
easybudda, ухх круто работает, большое спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.07.2010, 15:20
Помогаю со студенческими работами здесь

Считывание всего файла в ListBox
Пример 4. Считывание всего файла в ListBox. procedure TForm1.Button1Click(Sender: TObject); var F: TextFile; S: String; begin ...

Считывание не всего текста из файла
Есть такое вот считывание из файла: File.ReadLines(&quot;...&quot;).Skip(n).Take(m); Будет ли оно считывать весь файл или именно только то что...

Файл: Считывание всего файла по строчкам
Здравствуйте. Появилась небольшая проблемка в универе задали задачку и никак не могу решить. Нужно что б програма считывала txt файл и...

Считывание всего текста XML файла(заголовка,тегов,атрибутов)
День добрый. Как считать весь текст XML файла (&lt;?xml version=&quot;1.0&quot;?&gt;,теги,атрибуты)в string? А так же полученную строку записать в другой...

Считывание исходного кода страницы html, но не всего
Вдогонку к теме про парсер. Нужно скопировать кусок исходного кода сайта и отобразить его в стандартном компоненте WebBrouser (прости...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru