Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.04.12;
Скачать: [xml.tar.bz2];

Вниз

Помогите с функцией чтения файла на С++   Найти похожие ветки 

 
@!!ex ©   (2009-02-13 23:45) [0]

Мозг уже взрывается.
FILE* File = fopen(FileName.c_str(),"r");
fseek(File,0,SEEK_END);
int Size = ftell(File);
fseek(File,0,SEEK_SET);

char* Code = new char[Size+1];
fread(&Code[0],1,Size,File);
Code[Size] = "\0";
fclose(File);


В итоге Code содержит около 20 символов H(в дебаге все заполняется H, чтобы неверные данные были сразу видны).
Size имеет верное значение, совпадает с показаниями проводника и Notepad++.
Откуда берутся два десятка лишних символов???


 
@!!ex ©   (2009-02-13 23:57) [1]

хм... в файле 28 строк... при этом лишних символов 27...
это что перевод строки чтоли влияет????


 
@!!ex ©   (2009-02-13 23:59) [2]

и как от этого избавится??


 
wicked ©   (2009-02-14 00:18) [3]


> это что перевод строки чтоли влияет????

угу

FILE* File = fopen(FileName.c_str(),"rb");


> fread(&Code[0],1,Size,File);

fread(Code,1,Size,File);

любите ман - источник знаний


 
@!!ex ©   (2009-02-14 09:17) [4]


> FILE* File = fopen(FileName.c_str(),"rb");

Спасибо.

> fread(Code,1,Size,File);

и чем отличается?


 
benito   (2009-02-14 09:43) [5]

@!!ex ©   (13.02.09 23:45)

Страуструп ругался бы на вас. Страуструп категорически рекомендует использовать для ввода/вывода в С++ потоковые классы (в данном случае ifstream).
Ну а про приведение разделителей строк (будь то \r\n \n\r или \n, в зависимости от операционной системы) к \n в текстовом режиме вы то уж должны знать?


 
@!!ex ©   (2009-02-14 09:51) [6]

> [5] benito   (14.02.09 09:43)

Да мне вобщем то по барабану на что ругается Страустрап, у меня вообще свои классы для работы с файлами. Поэтому при том что давно пишу на С++, никогда раньше не приходилось использовать FILE.
Про приведение знал, про то, что r - это оказывается текстовый режим - не знал.


 
@!!ex ©   (2009-02-14 09:53) [7]

> [5] benito   (14.02.09 09:43)

Вообще странный подход, создаем инстурмент для работы, а потом категорически не рекомендуем его использовать.
Логика где?


 
benito   (2009-02-14 10:07) [8]

@!!ex ©   (14.02.09 09:53) [7]

>Логика где?

FILE - это наследие C. Потоковые классы, в целом, рекомендуется использовать потому, что они обеспечивают типобезопасность, автоматическое освобождение ресурсов при выбросе исключений, возможность читать юникод-строки. То есть, потоковые классы это стиль C++, FILE - это стиль C. Учите матчасть.


 
Lavrentiev   (2009-02-14 10:19) [9]

>Да мне вобщем то по барабану на что ругается Страустрап, у меня вообще свои классы для работы с файлами.

Не от того ли иной российский код так сильно напоминает индийский?


 
@!!ex ©   (2009-02-14 11:31) [10]

> [8] benito   (14.02.09 10:07)

Спасибо за дельный совет. ;)

> [9] Lavrentiev   (14.02.09 10:19)

А вы индийский код видели, или просто умную вещь повторяете?
Что-то мне подсказывает, что не видели.


 
@!!ex ©   (2009-02-14 11:53) [11]

> [8] benito   (14.02.09 10:07)
> FILE - это наследие C.

C++ язык не связанный с С. Зачем это наследие? Лишний костыль.


 
wicked ©   (2009-02-14 22:59) [12]


> > fread(Code,1,Size,File);
>
> и чем отличается?

меньше букав писать и меньше шанс допустить ошибку


> C++ язык не связанный с С. Зачем это наследие? Лишний костыль.

наследие - мегатонны написанного на си кода за 2 десятка лет
скажи, ты откажешься?


 
Alkid ©   (2009-02-15 11:42) [13]


> wicked ©   (14.02.09 22:59) [12]
> наследие - мегатонны написанного на си кода за 2 десятка
> лет
> скажи, ты откажешься?

Ну тут Вы неправы. С++ не является надмножеством С, так что для него свой компилятор, для С++ - свой. На самом деле (так сам Страуструп писал в "Дизайне и эволюции С++") он выбрал С потому что это был популярный язык и его "наследие" в С++ обеспечило то, что С++ не стал мертворожденным проектом, а привлек внимание программистов.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.04.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
11-1199562367
Willower
2008-01-05 22:46
2009.04.12
Incompatible types: TKOLApplet and PControl


15-1233310165
Ламот
2009-01-30 13:09
2009.04.12
Посоветуйте хороший фильм из новых или малоизвестных "наших".


2-1235653246
ывывыв
2009-02-26 16:00
2009.04.12
перетаскивение нескольких файлов на форму


2-1235307235
Sfinx
2009-02-22 15:53
2009.04.12
Отображение кнопки на панели задач.


2-1235468723
Korbit
2009-02-24 12:45
2009.04.12
Получить данные S.M.A.R.T от HDD





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский