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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужны названия функций, помощь дураку 
:(
    Опции темы
Siend
Дата 3.3.2011, 19:09 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



знаю что есть все есть в базе, но как студент-традиционный делаю все в ночь перед сдачей и читать некогда)

язык С++ (желательно) или С;
нужны названия функций и принцип реализации для:
1.открытия текстового файла (на чтение / на чтение и запись)
2.копирования из него первых 300 символов в строку (строка произвольная)
3.посимвольной обработки строки (сравнивать символ с кодом таблицы ASCII)
4.удаление из строки ненужных символов
5.запись строки в файл (новый)
6.запись строки в файл (старый - перезапись всего файла)
7.освобождение памяти (везде где надо)

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

Добавлено через 10 минут и 34 секунды
С миру по нитке! знаю что влом писать так много, поэтому если каждый кто знает напишет хотя бы по одной функции уже будет здорово  smile 
PM MAIL   Вверх
podzamkom
Дата 3.3.2011, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Для задачи надо подправить и дописать определения. Вот код:
Код

#include <windows.h>
#include <commdlg.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//
#include "твой файл объявлений.h"
// В нем объявлены как минимум
/*
char szFileName[_MAX_PATH];
char szTitleName[_MAX_FNAME + _MAX_EXT];

void PopFileInitialize(HWND, int);
BOOL PopFileOpenDlg(HWND, PSTR, PSTR);
BOOL PopFileSaveDlg(HWND, PSTR, PSTR);
BOOL PopFileRead(HWND, PSTR);
BOOL MakeMTxtFile();
BOOL PopFileSave(PSTR, PSTR);
*/

//...
// продолжение кода 
static OPENFILENAME ofn;    // структура для открытия файла
// Фильтр для открытия файла
static char szFilter[] ="Все файлы(*.*)\0*.*\0\0";

//...

void PopFileInitialize(HWND hwnd, int mode)
{    // Инициализируем структуру для открытия файла
    ofn.lStructSize        = sizeof(OPENFILENAME);
    ofn.hwndOwner         = hwnd;
    ofn.hInstance         = NULL;
    ofn.lpstrFilter        = szFilter;
    ofn.lpstrCustomFilter    = NULL;
    ofn.nMaxCustFilter        = 0;
    ofn.nFilterIndex        = 0;
    ofn.lpstrFile        = NULL;
    ofn.nMaxFile        = _MAX_PATH;
    ofn.lpstrFileTitle        = NULL;
    ofn.nMaxFileTitle        = _MAX_FNAME + _MAX_EXT;
    if(strlen(szFileName) == 0)      // здесь хранится имя файла для открытия
        ofn.lpstrInitialDir    = "C:\\";
    else
        ofn.lpstrInitialDir = szFileName;
    // Заголовок окна для открытия файла
    ofn.lpstrTitle            = "Выберите файл списка для обработки";//NULL;
    ofn.Flags            = 0;
    ofn.nFileOffset        = 0;
    ofn.nFileExtension        = 0;
    ofn.lpstrDefExt        = "txt";
    ofn.lCustData        = 0L;
    ofn.lpfnHook        = NULL;
    ofn.lpTemplateName    = NULL;
    return;
}

//...

// здесь запускаем диалог открытия 
BOOL PopFileOpenDlg(HWND hwnd, PSTR pstrFileName, PSTR pstrTitleName)
{
    ofn.hwndOwner            = hwnd;
    ofn.lpstrFile            = pstrFileName;
    ofn.lpstrFileTitle                = pstrTitleName;
    ofn.Flags                = OFN_HIDEREADONLY | OFN_CREATEPROMPT;
    return GetOpenFileName(&ofn);    // запуск диалога для открытия файла
}
// здесь запускаем диалог сохранения 
BOOL PopFileSaveDlg(HWND hwnd, PSTR pstrFileName, PSTR pstrTitleName)
{
    ofn.hwndOwner            = hwnd;
    ofn.lpstrFile            = pstrFileName;
    ofn.lpstrFileTitle        = pstrTitleName;
    ofn.Flags                = OFN_HIDEREADONLY | OFN_CREATEPROMPT;
    return GetSaveFileName(&ofn);    // запуск диалога для открытия файла
}
// получим длину загружаемого файла                      
static long PopFileLength(FILE *file)
{
    int iCurrentPos, iFileLength;

    iCurrentPos = ftell(file);
    fseek(file, 0, SEEK_END);
    iFileLength = ftell(file);
    fseek(file, iCurrentPos, SEEK_SET);
    return iFileLength;
}
// почитаем файл
BOOL PopFileRead(HWND hwndEdit, PSTR pstrFileName)
{
    FILE    *file;
    long    iLength, size;
    PSTR   pstrBuffer;
    
    if(NULL == (file = fopen(pstrFileName, "rb")))
        return FALSE;
    iLength = PopFileLength(file);
    if(NULL == (pstrBuffer = (PSTR)malloc(iLength)))
    {
        fclose(file);
        return FALSE;
    }
    size = fread(pstrBuffer, 1, iLength, file);
    fclose(file);
    free(pstrBuffer);
    return TRUE;
}
// сохраним файл
BOOL PopFileSave(PSTR pIFileName, PSTR pOFileName)
{
    FILE *file_i;
    FILE *file_o;
    long iLength;
    long oLength;
    PSTR pIBuffer;
    PSTR pOBuffer;

    if(NULL == (file_i = fopen(pIFileName, "rb")))
        return FALSE;
    if(NULL == (file_o = fopen(pOFileName, "wb")))
        return FALSE;
    iLength = PopFileLength(file_i);
    if(NULL == (pIBuffer = (PSTR)malloc(iLength)))
    {
        fclose(file_i);
        return FALSE;
    }
    if(NULL == (pOBuffer = (PSTR)malloc((iLength) * 10)))  // размер выходного файла ОООчень большой
    {
        fclose(file_o);
        return FALSE;
    }
    fread(pIBuffer, 1, iLength, file_i);
    fclose(file_i);
    oLength = 0;
/**/
// обработка входного файла и копирование данных в выходной файл
/**/
    fwrite(pOBuffer, 1, oLength, file_o);  // запись результата
    fclose(file_o);
    free(pIBuffer);
    free(pOBuffer);
    return TRUE;
}



PM MAIL   Вверх
Siend
Дата 3.3.2011, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Псиб огромное, хотя это слишком сложно для меня - попытаюсь разобраться)
PM MAIL   Вверх
borisbn
Дата 5.3.2011, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(Siend @  3.3.2011,  19:09 Найти цитируемый пост)
1.открытия текстового файла (на чтение / на чтение и запись)

Код

FILE * fp = fopen( имя файла, "rt" ); // "rt" - чтение, "wt" - запись

Цитата(Siend @  3.3.2011,  19:09 Найти цитируемый пост)
2.копирования из него первых 300 символов в строку (строка произвольная)

Код

char c_str[ 301 ];
fread( str, sizeof( char ), 300, fp );
std::string cplusplus_str( c_str );

Цитата(Siend @  3.3.2011,  19:09 Найти цитируемый пост)
3.посимвольной обработки строки (сравнивать символ с кодом таблицы ASCII)

Код

for ( int i = 0; i < cplusplus_str.length(); i++ ) {
    if ( cplusplus_str[ i ] == 13 ) ...
}

Цитата(Siend @  3.3.2011,  19:09 Найти цитируемый пост)
4.удаление из строки ненужных символов

Код

cplusplus_str.erase( позиция, сколько_символов удалять );

Цитата(Siend @  3.3.2011,  19:09 Найти цитируемый пост)
5.запись строки в файл (новый)

Код

FILE * fp = fopen( имя файла, "wt" );
fprintf( fp, "%s", cplusplus_str.c_str() );

Цитата(Siend @  3.3.2011,  19:09 Найти цитируемый пост)
6.запись строки в файл (старый - перезапись всего файла)

см. п.5
Цитата(Siend @  3.3.2011,  19:09 Найти цитируемый пост)
7.освобождение памяти (везде где надо)

смотря как она была выделена. если просто переменная на стеке - то никак, если malloc, то free, если new, то delete


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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