Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 07.03.2014
Сообщений: 8
1

При работе с большим текстом программа перестаёт работать

11.05.2014, 12:45. Показов 808. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста в чём ошибка?
Данная программа считывает текст из документа и помещает этот текст в массив. После чего этот массив надо разбить на подстроки с помощью strtok и разбитый массив записать в файл.

Но вот проблема если на вход подать слишком большой текстовый документ(на пример: "война и мир" - 3 202 699 символов ) то программа перестаёт работать.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char *A;
    int n = 0;
    int i;
    FILE *file;
    FILE *file2;
 
    /* Открываем файл для подсчёта символов */
    if((file = fopen("1.txt", "r")) == NULL){
        puts("File not found!");
        return 0;
    }
    /* Считаем количество символов до конца файла */
    while(!feof(file)){
        char tmp;
        if((fscanf(file,"%c", &tmp)) == 1){
            n++;
        }
    }
    fclose(file);
 
    // n - file size
    printf("Kolichestvo simvolov N = %d \n \n", n); /* Выводим кол - во символов на экран */
 
    A = malloc (sizeof (char) * (n + 1));
    if((file = fopen("1.txt", "r")) == NULL){ /*Считываем символы из файла*/
        puts("File not found!");
        return 0;
    }
    for (i = 0; i < n; i++){
        fscanf(file,"%c",&A[i]); /* Записываем символы из файла в массив */
        //printf("%c", A[i]);
    }
    fclose(file);
 
    char *a[n], *words[n], *t;
    int *kolichestvo;
    int j, q, sk, h = 0;
    t = malloc (sizeof (char) * (n + 1));
    kolichestvo = malloc (sizeof (char) * (n + 1));
    i = 0;
    t = strtok (A," ");
 
        while (t != NULL){
            a[i] = t;
            t = strtok (NULL," ");
            i++;
    }
 
    for(j = 0; j < i; j++){
        sk = 0;
        for(q = 0; q < i; q++){
                sk++;
        }
            words[h] = a[j];
            kolichestvo[h] = sk;
            if(kolichestvo[h])
            h++;
    }
    for(j = 0; j < h; j++){
        printf("%s ", words[j]);
   }
 
        if ((file2 = fopen("2.txt", "w")) == NULL){
        puts("File not found!");
        return 0;
    }
    for(j = 0; j < h; j++){
    fprintf(file2, "\n%s ", words[j]); /* Записываем символы в новый файл */
 
    }
    fclose(file2);
    return 0;
}
Вложения
Тип файла: txt 1.txt (1.7 Кб, 3 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2014, 12:45
Ответы с готовыми решениями:

При добавлении кнопки перестаёт работать программа
господа программа выводит картинку+надпись,хотел добавить кнопку , но компилятор начинает...

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

При сворачивании окна программа перестает работать
Доброе время суток. Моя программа перестает выполнять свою работу если скрыть/свернуть окно или...

Программа перестает работать при смене интервала
почему, когда я меняю интервал с 0 - 6,2832 программа не работает? #include &lt;stdio.h&gt; #include...

2
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
11.05.2014, 13:07 2
Сколько требуется строк для записи их в массив? И что значит "не работает"?
0
0 / 0 / 0
Регистрация: 07.03.2014
Сообщений: 8
11.05.2014, 13:58  [ТС] 3
Нужно записать всю книгу война и мир. Работаю в kodebloks. Когда подключаю файл война и мир, и запускаю программу то kodebloks выдаёт сообщение что работа программы прекращена. Если запустить на линуксе то пишет:Ошибка сегментирования (core dumped) .
0
11.05.2014, 13:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2014, 13:58
Помогаю со студенческими работами здесь

При вторичном запуске программа перестает работать
Доброго всем времени суток! Очень нужна помощь! Сам в программировании не силен, только-только...

Программа перестает работать при наличии меню
Без меню все работает. Сделал в меню, включаю программу решения биквадратных уравнений под номером...

При добавлении кнопки на форму, программа перестает работать
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Программа по отправке почты при переносе на сервер перестает работать
Посылаю почту через SMTP. У меня на компе все работает, ставлю программу на сервер, получаю ошибку...

При очистке Array of Double в OSX, программа перестает работать
Стоит задача очищать Array of Double при очередном заполнении. Вроде простая процедура. Но при...

При конвертировании проекта из VB 2008 в VB 2010 программа перестает работать
есть прога писанная на бейсике 2008,ее нужно переделать на бейсик 2010


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru