Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с текстовыми файлами, Жилательно ссылки на новичковсую лит-ру 
:(
    Опции темы
Zero
  Дата 29.9.2005, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Всем привет...
У меня тут такая проблема: у нас в институте начали преподавать этот Сэ плюс плюз, а я в нём вобще не шарю... smile До этого всё делал на Делфи и всё было нормально... Задали прогу, которую на делфи часа за 3 бы на писал, а на си++, наверно придётся надолго... Вообщем я вчера купил себе книгу "Си ++ во всей полноте", Уолтер Савич вобщем синтаксис то понятен, (хотя и кривой какойто язык, исковеркали не понятно как... smile ) Вот только в моей книге не описана работа с файлами, а для моей курсовой нужно с текстовыми файлами работать.
Немогли бы вы дать ссылку на литературу или нормальный факу, где написано для новичков по сии+, а то я только первый день с ним разбираюсь, сам пока ориентироватся не могу нормально.
Вообщем мне нужны альтенативные Делфовским командам:

Var t:Text; ─ определить файл как текстовый;
...
AssignFile(...) ─ связать идентификатор с путём в файле;
ReWrite(...) ─ создать файл;
Reset(...) ─ открыть файл;
CloseFile(...) ─ закрыть файл;
write() ─ записать переменные в файл;
read() ─ прочитать из файла...
и т.п.

Это основне команды, альтернативы которых на языке Si++ мне необходимы, а желательно бы побольше разных интересных команд.
Заранее спасибо!!!
PM MAIL ICQ   Вверх
Mad
Дата 29.9.2005, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(Zero @ 29.9.2005, 19:50)
(хотя и кривой какойто язык, исковеркали не понятно как...  )

Вот после ентого не особенно хотелось отвечать, но всетаки отвечу (а начнеш писать на с++ сам поьмеш что это твой Делфи, т.е паскаль, немного корявый smile)

Var t:Text -> FILE* file (тип файла, текстовый или бинарный определяеться дальше)

AssignFile(), ReWrite(), Reset() -> fopen() (нужный метод по параметрам)
CloseFile() -> fclose()
write(), read() -> fwrite(), fread()

параметры вызовов смотри в доках компилятора (дело в том, что это не стандарт языка, а просто наиболее распрастранненый выриант стандартных либов), они немного меняються от компилятора к компилятору, и от платформы к платформе (с++ это тебе не делфи, он не только по винду есть smile)


--------------------
user posted image
PM MAIL   Вверх
En_t_end
Дата 30.9.2005, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Горячий ОФФТОПsmileизвините, просто я в экстазе после прочтения стандарта smile )
Mad
Цитата(Mad @ 30.9.2005, 02:25)
Вот после ентого не особенно хотелось отвечать, но всетаки отвечу (а начнеш писать на с++ сам поьмеш что это твой Делфи, т.е паскаль, немного корявый )

А ещё к этой фразе я добавлю одну цитату в моей корректировке...
По моему это из CPP for real programmers:
"Все уродства С++ - это уродства нашего языка, все преимущества - преимущества нашего языка..."
Фраза гениальная, а простейшее подтверждение этому... можно узнать, кто такой умный, что додумался до такого синтаксиса ?!ну это же просто здец какой-то, это же издевательство... В каком это языке(или культуре) перед тем как сказать человеку что-то каждый раз(в течении длительного разговора) кланяются и вытанцовывают ритульный танец?(для примера, ":=" - оригинальный способ избавиться от проблем с выбором того кому же все таки надо присвоить результат операции). В языке C/C++ введены для этого случая не спроста lvalue and rvalue(возможна такая конструкция v = t+++++m, тем более что даже m/*lvalue*/ = 20/*rvalue*/; гораздо больше похожа на всем привычную запись в алгебре, нежели :=).Ведь именно с помошью этой технологии анализатор кода оценивает предложенную программистом строку(на основе свойств lvalue и rvalue) и делает то что требует стандарт, причем строка может выглядеть довольно некрасиво, но очень лаконично, вписываясь в стиль отдельного программиста, тем самым веделяя его из толпы.
В чем дело ? Вам не понравилось, что наряду с простыми функция которые возращают целоисчисленные значения, существуют те, что берут в качестве аргумента указатели, те что возращают непонятные структуры с множеством обьединений... тем, что классы... могут быть полиморфными... наследственные связи которых настолько развиты, что уж не понять, когда же все таки будет вызвана исходная vitrual функция из базового класса. Когда на сцене появляются великие исключения из правил - mutable object у вас наверное кружиться голова ?
Мне нравиться C++ даже потому, что это свобода, свобода в выборе, ты не тупо следуешь четким правилам, ты вправе решать сам, как и когда что-то изменить... допустим тебе решать пользоваться ли reinterpret_cast или же исправить ошибку(+использовать static_cast), избавив или же наоборот прибавив других ошибок.
А декремент и инкремент с технологией постфикса и префикса - это вообще гениальная технология.
Код

 Si++ мне необходимы, а желательно бы побольше разных интересных команд.

Мда... горе тому языку, в чьем стандарте есть место базовым операторам I/O(STL с её cout и cin в данном случае исключение, ибо библиотеки так же легко отключаются, как и подключаются)Мда, как же жалко Viarn'а Trup'а, что создал Si++.(LOL)

P.S. очень рад, что "Сэ плюс плюз" пришелся вам по вкусу smile

Это сообщение отредактировал(а) En_t_end - 30.9.2005, 13:33
PM MAIL ICQ Skype GTalk Jabber   Вверх
Romikgy
Дата 30.9.2005, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



На любом языке можно написать любую вещь!
И неоязательно кричать "С++ руль, Дельфи фуфель" .... некрасиво smile smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
En_t_end
Дата 30.9.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Цитата(Romikgy @ 30.9.2005, 17:42)
На любом языке можно написать любую вещь!
И неоязательно кричать "С++ руль, Дельфи фуфель" .... некрасиво

по поводу первой фразы... Ответ отрицательный, каждый язык имеет специализацию, кстати, в нашем случае C++ имеет куда более широкую специализацию.
Здесь никто пока ещё не кричал, просто человек высказал свое мнение по поводу "корявости" синтаксиса C++, я попытался его переубедить.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Romikgy
Дата 30.9.2005, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(En_t_end @ 30.9.2005, 14:11)
Ответ отрицательный, каждый язык имеет специализацию

Вот именно , что имеет свою специализацию, но написать можно на любом smile

Цитата(En_t_end @ 30.9.2005, 14:11)
не кричал

Хорошо не кричал , но как то резковато вышло имхо smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
p0s0l
Дата 30.9.2005, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Модератор: Давайте вернёмся к теме обсуждения.

Сипипишники, что ж вы так ? Там же смайлик стоял такой ( smile ) , не нужно было относиться к фразе Zero серьезно


--------------------
С уважением, г-н Посол.
PM   Вверх
Zero
Дата 30.9.2005, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Mad @ 29.9.2005, 22:25)
вот после ентого не особенно хотелось отвечать, но всетаки отвечу

Ладно извинтиляюсь, smile я не хотел ни кого обидеть... Просто это мои первые впечатления о Си++ smile Вот например, 1С я после делфи за 2 часа выучил (основной принцип), а тут начал пробовать одну команду, которая написана в книге, а она не работала, smile а потом оказалось, что этот Сии++ ещё и к регистру чувствительный smile Ну зачем справшивается такой синтаксис создавать, как ни для того ли чтобы новичков путать??? smile (а если кто будет использовать два идентификатора с одним именем но разным регистром, то ИМХО сам програмист запутается). smile

Ладно,
Цитата(p0s0l @ 30.9.2005, 16:33)
Давайте вернёмся к теме обсуждения.


Цитата(Mad @ 29.9.2005, 22:25)
Var t:Text -> FILE* file (тип файла, текстовый или бинарный определяеться дальше)

Чёто у меня не получается понять это... вы немогли бы на мелком примере продемонстрировать, по чуть-чуть каждую команду, а то она до меня плохо доходит... smile
PM MAIL ICQ   Вверх
Mad
Дата 30.9.2005, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(Zero @ 30.9.2005, 20:34)
Чёто у меня не получается понять это... вы немогли бы на мелком примере


Цитата(MSDN)

// crt_fread.c
/* This program opens a file named FREAD.OUT and
* writes 25 characters to the file. It then tries to open
* FREAD.OUT and read in 25 characters. If the attempt succeeds,
* the program displays the number of actual items read.
*/

#include <stdio.h>

int main( void )
{
  FILE *stream;
  char list[30];
  int  i, numread, numwritten;

  /* Open file in text mode: */
  if( (stream = fopen( "fread.out", "w+t" )) != NULL )
  {
      for ( i = 0; i < 25; i++ )
        list[i] = (char)('z' - i);
      /* Write 25 characters to stream */
      numwritten = fwrite( list, sizeof( char ), 25, stream );
      printf( "Wrote %d items\n", numwritten );
      fclose( stream );

  }
  else
      printf( "Problem opening the file\n" );

  if( (stream = fopen( "fread.out", "r+t" )) != NULL )
  {
      /* Attempt to read in 25 characters */
      numread = fread( list, sizeof( char ), 25, stream );
      printf( "Number of items read = %d\n", numread );
      printf( "Contents of buffer = %.25s\n", list );
      fclose( stream );
  }
  else
      printf( "File could not be opened\n" );
}


в данном случае "r+t" символ t означает что файл отрываеться в текстовом режиме, для бинарного вместо t надо b (хотя тут разница между режимами почти отсутствует smile)

и далее по каждой функции смотриш MSDN, по CRT библиотеке (в том числе и по операциям I/O) там все с маленькими примерами



--------------------
user posted image
PM MAIL   Вверх
Zero
Дата 30.9.2005, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



А помогите теперь найти ошибку тут:
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "CT.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  file *stream;
  char list[30];
  int  i, numread, numwritten;

 if( (stream = fopen( "c:\111.txt", "r+t" )) != NULL )
 {
   numread = fread( list, sizeof( char ), 25, stream );
   printf( "Number of items read = %d\n", numread );
   printf( "Contents of buffer = %.25s\n", list );
   fclose( stream );
 }
}
//---------------------------------------------------------------------------

Компилятор выдаёт такую строку:
Цитата
[C++ Error] CT.cpp(23): E2268 Call to undefined function 'fopen'

Добавлено @ 22:51
Короче как я понял тут при открытии что то не работает, как будто функция не существует, может тут где нибудь прописывать вызов библиотеки со стандартными функциями??? smile
PM MAIL ICQ   Вверх
BreakPointMAN
Дата 30.9.2005, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Цитата(Zero @ 30.9.2005, 22:49)
А помогите теперь найти ошибку тут:
Компилятор выдаёт такую строку:
Цитата
[C++ Error] CT.cpp(23): E2268 Call to undefined function 'fopen'

подключи заголовочный файл с описанием fopen - не помню точно, как называется, по-моему, stdio.h


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Mad
Дата 30.9.2005, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(BreakPointMAN @ 30.9.2005, 21:54)
по-моему, stdio.h

именно
Код

#include <stdio.h>

Добавлено @ 23:13
Да и кстати, если уже решил перейти на С++ то уже и на Visual Studio переходи (только без нападок, это иое личное мнение smile)


--------------------
user posted image
PM MAIL   Вверх
Mayk
Дата 1.10.2005, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Mad @ 1.10.2005, 01:47)
для бинарного вместо t надо b

b можно опускать. fopen(a,"wb") эквивалентно fopen(a,"w"); AFAIR



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Zero
Дата 1.10.2005, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(BreakPointMAN @ 30.9.2005, 22:54)
подключи заголовочный файл с описанием fopen - не помню точно, как называется, по-моему, stdio.h

Блин, теперь такая ошибка выдаётся: smile
Цитата
[C++ Error] CT.cpp(24): E2034 Cannot convert 'FILE *' to 'void * *'

Цитата(Mad @ 30.9.2005, 23:10)
Да и кстати, если уже решил перейти на С++ то уже и на Visual Studio переходи

Я не решил переходить на с++, просто я в академии прохожу курс ООП, который читается на С++ Я просто хочу разобратся с этим с++ и всё, а работаю я на 1С:Предприятие

Это сообщение отредактировал(а) Zero - 1.10.2005, 10:27
PM MAIL ICQ   Вверх
BreakPointMAN
Дата 1.10.2005, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Цитата(Zero @ 1.10.2005, 10:27)
Блин, теперь такая ошибка выдаётся: smile
Цитата
[C++ Error] CT.cpp(24): E2034 Cannot convert 'FILE *' to 'void * *'


Описание указателя потока *stream у тебя неправильное, ибо тип этой структуры пишется в верхнем регистре:
Код

FILE *stream;



--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.