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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2013, 15:52   #1
klesk2012
Новичок
Джуниор
 
Регистрация: 11.05.2013
Сообщений: 1
По умолчанию Манипуляторы

Ребята, проблема с манипуляторами.. при первом запуске программы и создании файла все путем.. после выхода и нового запуска.. вместо промежутков setw выдает нули((

Код:
#include <windows.h>
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void menu(void);
void view(HANDLE);
void addplayer(HANDLE);
void PPG(HANDLE);
 
struct Data {unsigned day, month, year;};
struct Miami_Heat {char Name[8];
                   char Surname[9];
                   char pos[2];
                   char nat[7];
                   int  height;
                   int  weight;
                   int  nomber;
                   int  PPG;
                   Data born;};
int temp;
char temp2[30];
int temp3;
int temp4;

int main(int argc, char *argv[ ]) 
{
    HANDLE hFile;
    FILETIME ftCreate;
    SYSTEMTIME stUTC, stLocal;
    DWORD status;
    const int BUFSIZE = 4096;
    char fullFileName[BUFSIZE] = "";
    int choise;
 
    hFile = CreateFile(TEXT("Miami_Heat.txt"),      
                       GENERIC_READ | GENERIC_WRITE, // read && write to file
                       FILE_SHARE_READ,              // file may be opened by other app
                       NULL,                         // default security
                       OPEN_ALWAYS,                  // if not exist create otherwise open
                       FILE_ATTRIBUTE_NORMAL,        // normal file
                       NULL);                        // no addition attributes
 
    if (hFile == INVALID_HANDLE_VALUE) { 
        cout << "Could not open file (error " << GetLastError() << ")" << endl;
        getchar();
        CloseHandle(hFile);
        return 1;
    }
    
    if (GetLastError() == 183) {
        status = GetFullPathNameA("Miami_Heat.txt", BUFSIZE, fullFileName, NULL); 
        if (status == 0 ) {
            cout << "GetFullPathNameA failed (error " << GetLastError() << ")" << endl;
            getchar();
            CloseHandle(hFile);
            return 1;
        }
        
        status = GetFileTime(hFile, &ftCreate, NULL, NULL);
        if (status == 0 ) {
            cout << "GetFileTime failed (error " <<  GetLastError() << ")" << endl;
            getchar();
            CloseHandle(hFile);
            return 1;
        }
        
        // convert time to local time
        FileTimeToSystemTime(&ftCreate, &stUTC);
        SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);
 
        cout << "File " << fullFileName << endl << "File created at " << setw(2) << setfill('0') << stLocal.wDay 
             << "-" << setw(2) << setfill('0') << stLocal.wMonth << "-" << setw(4) << stLocal.wYear << endl << endl;
    } else {
        cout << "New file Miami_Heat.txt8 created." << endl << endl;
    }
    
    menu();
    cout << "[?] ";
    cin >> choise;
    
    while (choise != 7) {
        switch(choise) {
            case 1:
                view(hFile);
                break;
            case 2:
                addplayer(hFile);
                break;
            case 3:
                PPG(hFile);
                break;
           
            default:
                cout << "Invalid value." << endl << endl;
                menu();
                break;
        }
        cout << "Enter number: ";
        cin >> choise;
    }
    
    CloseHandle(hFile);
    return 0;
}
 
void menu() {
     cout<<"-------------------------------------------------------------------"<<endl;
    cout<<"|"<<setw(33)<<"Menu"<<setw(33)<<"|"<<endl;
    cout<<"-------------------------------------------------------------------"<<endl;
    cout<<"|"<<"1. To display the data table from file"<<setw(33)<<"|"<<endl;
    cout<<"|"<<"2. To add a new player"<<setw(38)<<"|"<<endl;
    cout<<"|"<<"3. Displays a list players, sorted by the number of balls thrown "<<"|"<<endl;
    cout<<"|"<<"4. Sorting players by position"<<setw(36)<<"|"<<endl;
    cout<<"|"<<"5. Players playing in the youth team"<<setw(30)<<"|"<<endl;
    cout<<"|"<<"6. Search by name"<<setw(49)<<"|"<<endl;
    cout<<"|"<<"7. Exit"<<setw(59)<<"|"<<endl;
    cout<<"-------------------------------------------------------------------"<<endl;
}
Изображения
Тип файла: jpg Безымянный.jpg (71.5 Кб, 83 просмотров)
klesk2012 вне форума Ответить с цитированием
Старый 11.05.2013, 17:08   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

И это в лучшем случае. Блин, башку сломал, не могу въехать, где у Вас setw инициализируется? Жуть.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 11.05.2013, 22:25   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
И это в лучшем случае. Блин, башку сломал, не могу въехать, где у Вас setw инициализируется? Жуть.
а с какого перепугу манипулятторы должны инициализироватся?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.05.2013, 22:52   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Не сильна в манипуляторах, поэтому посижу послушаю.
Разве тут setfill('0') не задается, что надо выводить нули?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 12.05.2013, 00:11   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Хорошо, манипуляторы - тип указателей. Если не инициализировать (можно), но тогда он будет указывать на произвольную область памяти. Для компилятора С++, такая ситуация не принципиальна (указатель указывает, и всё тут), для человека, это принципиально, а на что этот гад указыват? На последовательность нулей?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 12.05.2013 в 00:14.
Smitt&Wesson вне форума Ответить с цитированием
Старый 12.05.2013, 00:49   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Хорошо, манипуляторы - тип указателей. Если не инициализировать (можно), но тогда он будет указывать на произвольную область памяти. Для компилятора С++, такая ситуация не принципиальна (указатель указывает, и всё тут), для человека, это принципиально, а на что этот гад указыват? На последовательность нулей?
манипуляторы это особый вид классов, а не массивы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Манипуляторы и манипулируемые + Основы ООП Izhic Свободное общение 9 13.06.2009 12:24