Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2016, 13:05   #1
Trakker
 
Регистрация: 04.05.2016
Сообщений: 5
По умолчанию перевыделение памяти и запись в массив

Записать предложения из файла, так что бы был список предложений(т.е. одно предложение на одной строчке в массиве). Предложение может начинается из любой позиции в файле, если места мало то через реалок перевыделить память.
что в фсканф, что в фрид пишет ошибку: выражение должно иметь тип указателя на объект, я не знаю как это исправить, подскажите пожалуйста. И как перевыделить память для двумерного массива, если для одномерного то можно ln=(MEMORY)realloc(ln,200*(sizeof(c har));, то для двумерного я тоже ,к сожалению, не понимаю как.

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

typedef struct {
char **st;
} MEMORY;

int main()
{
setlocale(LC_ALL, "RUS");
FILE *in,*out;
if (!(in = fopen("C:\\Users\\nikita\\Desktop\\ source.txt", "r")))
{
fprintf(stderr, "Error opening file");
getch();
exit(1);
}
if (!(out = fopen("C:\\Users\\nikita\\Desktop\\ source.txt", "r")))
{
fprintf(stderr, "Error opening file");
getch();
exit(1);
}
int c, row=100,column=100,i;
MEMORY ln;
fseek(in, 0, SEEK_END); // устанавливаем позицию в конец файла
long lSize = ftell(in);
ln.st = (char **)malloc(row*sizeof(char *));
for (i = 0; i<row; i++)
ln.st[i] = (char *)malloc(column*sizeof(char));
int i = 0;
while ((c = fgetc(in)) != EOF)
{

/*
size_t result = fread(**ln[i].st, 1, lSize, in); // считываем файл в буфер
if (result != lSize)
{
fputs("Ошибка чтения", stderr);
exit(3);
}
*/
/*if (c !=' ')
{
if (c != '.')
{
i++;
fscanf(in, "%s", *(ln[i].st));
}
}
*/


}
}
Trakker вне форума Ответить с цитированием
Старый 23.11.2016, 14:00   #2
Trakker
 
Регистрация: 04.05.2016
Сообщений: 5
По умолчанию

нашел ошибку fscanf(in, "%s", ln.st[i]);, но все таки как использовать реалок и записать из массива в файл если for (i = 0; i < column;i++)
fprintf(out, "%s", ln.st[i]); не работает, записывает мусор

Последний раз редактировалось Trakker; 23.11.2016 в 14:03.
Trakker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal Вывод массива указателей на запись и очистка динамической памяти Решетова Алена Помощь студентам 9 19.03.2013 18:51
Массив в динамической памяти (С++) druger Помощь студентам 0 05.12.2011 10:13
Запись координат в массив в реал тайм, Как записать координаты в массив Dark19 Visual C++ 2 21.06.2011 18:45
Обращение к ячейкам памяти HDD, чтение и запись Silver-nic Win Api 8 08.09.2009 16:51
Импорт данных из памяти, прибавление к ним значение и запись GRA1N Помощь студентам 5 26.07.2009 01:29