Форум программистов, компьютерный форум CyberForum.ru

Открытие файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Переписать с C# в C++ http://www.cyberforum.ru/cpp-beginners/thread635034.html
есть код c# class SomeClass { public static string Arr = { "One", "Two", "Three" }; ...............................................
C++ Как инициализровать константное поле класса в конструкторе? Здравствуйте. Такая проблема. Класс работает с множеством картинок одинакового разрешения. Размеры картинки должны храниться в полях класса(естественно лучше константных). Такая проблема: инициализировать константы в моём случае можно только через конструктор до тела констутора; чтобы узнать размер картинки надо создавать объект любой картинки из коллекции и методами width(), height() получать... http://www.cyberforum.ru/cpp-beginners/thread635025.html
C++ Замена фигур на шахматной доске
задача. расставить случайным образом четырех коней на шахматной доске (два белых и два черных). вывести отдельно список полей под боем каждого из коней, список полей под боем нескольких (указать каких именно), и полей не под боем ни одного из четырех. Добавлено через 9 часов 7 минут слабо? это, конечно, не диагональ симметричной матрицы вывести...
C++ Генератор слов
Здравствуйте! Хочу написать программу по генерированию слов из набора букв, но даже не представляю с чего начать... Может кто-нибудь посоветовать с чего начать? Спасибо большое... Опишу немного программу: Пользователь вводит в строку буквы НО?А и нажимает кнопку, программа должна подобрать все возможные слова и вывести. Знаком вопроса заменяются неизвестные буквы...
C++ Очередь с приоритетом http://www.cyberforum.ru/cpp-beginners/thread635009.html
/* ПОМОГИТЕ пож. в задаче не могу реализовать статистику печати, т.е. вывода на экран времени когда кто вошёл в очередь и не получается отсортировать по приориттам клиентов, др. словами у меня сортируется только приоритет а клиент нет, у клиента меняется только приоритет*/ /* 3. Разработать приложение, имитирующее очередь печати принтера. Должны быть клиенты, посылающие запросы на принтер, у...
C++ Класс матриц с арифметическими операциями С++ Я создаю класс матриц с операциями сложения, умножения, вычитания матриц, умножения на константу, транспонирования на С++. Почему-то не работает умножение матриц. Помогите пожалуйста. Вот код. #include<iostream> using namespace std; class Matrix{ friend Matrix operator * (Matrix, Matrix); public: void SetMatrix(); подробнее

Показать сообщение отдельно
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,581
Записей в блоге: 17
11.08.2012, 17:12     Открытие файла
Немного поколдовал

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
 
int main()
{
  using namespace std;  
  const size_t MAX_PATH=32;
  const size_t COUNT_OF_FILES= 32;
  size_t CountOfFiles = 0;
 
  fstream data;
  char **NameOfFiles = new char*[COUNT_OF_FILES];
 
    //если файл ещё не существует
    if(access("info.txt", 0) == -1)
     {
       data.open("info.txt",ios::out | ios::binary);
 
       data.write(reinterpret_cast<const char *>(&CountOfFiles),sizeof(CountOfFiles));
       data.close();
       data.clear();
 
       cout << "Файлов ещё нет!" << endl;
     }
    else
     {
       data.open("info.txt",ios::in | ios::binary);
       data.read(reinterpret_cast<char *>(&CountOfFiles),sizeof(CountOfFiles));
 
        for(size_t i = 0;i < CountOfFiles;i++)
         {
            NameOfFiles[i] = new char[MAX_PATH];//
            data.read(NameOfFiles[i],32*sizeof(char));//
         }
 
        data.close();
        data.clear();
     }
        
 
    if(CountOfFiles)
      {
        for(size_t i = 0;i < CountOfFiles;i++)  cout << i+1 << " - " << NameOfFiles[i] << endl;
      }
 
    cout << "Введите название файла" << endl << "Максимум 28 символов" << endl;
 
    string Temp;
    getline(cin,Temp);
 
    if(Temp.size() < 32)
     {
      NameOfFiles[CountOfFiles] = new char[MAX_PATH];
      strcpy(NameOfFiles[CountOfFiles],Temp.c_str());
      
      data.open("info.txt",ios::out | ios::binary);
 
      CountOfFiles++;
      data.write(reinterpret_cast<const char *>(&CountOfFiles),sizeof(CountOfFiles));
    
     //пишем сами названия
     for(size_t i = 0;i < CountOfFiles;i++)  data.write(NameOfFiles[i],32*sizeof(char));
 
     data.close();
     data.clear();
    }
    else  cout << "Можно ввести максимум 28 символов" << endl;
 
    //освобождаем ресурсы
  for(int i = 0;i < CountOfFiles;i++)  delete []NameOfFiles[i];
  delete []NameOfFiles;
  
  return 0;
}
Добавлено через 17 минут
возможно,а что именно?
Последний символ обрезался.
я понимаю,что если название меньше 32 символов,то у меня хранится само название и оставшееся место заполняется неизвестно чем
Так и должно быть, только '\0' должен разделять их.
 
Текущее время: 18:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru