Ввожу вектор,записываю в файл(записываю как в текстовый(wt)),открываю - а там бред..Не понимаю,почему=(
ВОт код..
Сообщение отредактировано: Andrewshkovskii -
Язык - С++.Проблема с записью в файл массива. |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Язык - С++.Проблема с записью в файл массива. |
Andrewshkovskii |
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: 0 |
Ввожу вектор,записываю в файл(записываю как в текстовый(wt)),открываю - а там бред..Не понимаю,почему=(
ВОт код.. Сообщение отредактировано: Andrewshkovskii - |
volvo |
Сообщение
#2
|
Гость |
Цитата fwrite(pvector,sizeof(pvector),1,f); |
Andrewshkovskii |
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: 0 |
тогда,я так понимаю надо использовать массив из вещественных чисел и открывать файл с параметром "wb" ?что бы записать весь массив в файл?
|
volvo |
Сообщение
#4
|
Гость |
Ты объясни чего ты хочешь? Быстро записать массив в файл (но его при этом нельзя будет просматривать текстовым редактором), или сделать так, чтобы файл ДА можно было смотреть редактором?
|
Andrewshkovskii |
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: 0 |
1ое.
|
volvo |
Сообщение
#6
|
Гость |
Тогда да, открывай файл как бинарный:
if((f=fopen(path,"wb")) == NULL) ... |
Andrewshkovskii |
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: 0 |
...Опять..проблема)
Сообщение отредактировано: Andrewshkovskii - |
volvo |
Сообщение
#8
|
Гость |
Во-первых, кто тебе сказал, что из файла, открытого по "wb" можно читать? Переоткрой файл на чтение - тогда сможешь...
А во вторых ты не совсем корректно вычисляешь размер массива... Вот так попробуй: fwrite(pvector,vsize*sizeof(float),1,file); |
Andrewshkovskii |
Сообщение
#9
|
Бывалый Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: 0 |
Спасибо,все исправил,разобрался - работает:)Боооольшушие спасибо!:)
Сообщение отредактировано: Andrewshkovskii - |
volvo |
Сообщение
#10
|
Гость |
Можешь вернуть так:
float *fileread(int msize) { , только тогда не забудь удалить в основной программе этот блок памяти: int main() { |
Andrewshkovskii |
Сообщение
#11
|
Бывалый Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: 0 |
0
Сообщение отредактировано: Andrewshkovskii - |
volvo |
Сообщение
#12
|
Гость |
Цитата применяю функцию разыменовывания,работает,но считывает из файла белеберду Не имею ни малейшего понятия, почему... Я привел тебе часть корректно отработавшей программы... Возможно, дело в компиляторе?Хм... Меня посетила догадка: ты часом внутри fileread() не забыл убрать delete [] bufm ? А насчет Цитата Как все считать все что хранитсья в файле,не зная размер? - узнать размер файла в байтах (скажем, через ftell), посчитать, сколько это будет в элементах нужного типа, и читать:... // открываем файл для чтения Сообщение отредактировано: volvo - |
Andrewshkovskii |
Сообщение
#13
|
Бывалый Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: 0 |
Компилятор старенький(3.1) ,щас пойду дальше разбираться..
Сообщение отредактировано: Andrewshkovskii - |
volvo |
Сообщение
#14
|
Гость |
Что-то все меньше понимаю я логику твоего компилятора... Откуда там взялся float ** и зачем его преобразовывать к float? Может у тебя с предварительным описанием что-то не стыкуется? Как прототип fileread описан?
|
Andrewshkovskii |
Сообщение
#15
|
Бывалый Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: 0 |
Вот код целиком(извиняюсь за громосткость) :
#include <iostream.h> |
volvo |
Сообщение
#16
|
Гость |
Ну, а теперь посмотри, что возвращает fileread у тебя, и что - у меня... У тебя возвращается просто float, у меня - float *
|
Andrewshkovskii |
Сообщение
#17
|
Бывалый Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: 0 |
исправил,но плохо читает.Т.е циклиться или виснет..может с размером проблемы?
Выводит сначало 3 элемента,а потом выводиться много числе с мантисами..откуда- непонятно. Сообщение отредактировано: Andrewshkovskii - |
volvo |
Сообщение
#18
|
Гость |
Цитата Т.е циклиться или виснет..может с размером проблемы? Нет... Проблемы с тем, что при описанииfloat *fileread(int msize)у тебя изменение msize не передается в основную программу, и потом при вызове work() в нее передается мусор... Сделай msize ссылкой: float *fileread(int &msize), тогда то ее значение которое определится в функции fileread станет известно в вызывающей ее main(), и соответственно - в work. |
Текстовая версия | 24.12.2024 0:14 |