@alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
|
11.08.2012, 01:41
[ТС]
|
|
спасибо
а вы могли бы сказать,где у меня ошибка?
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
| #define MAX_PATH 32
#define COUNT_OF_FILES 32
int CountOfFiles = 0;
int main()
{
setlocale(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.seekg(0);
data.read(reinterpret_cast<char *>(&CountOfFiles),sizeof(CountOfFiles));
//после того как записали кол-во файлов
//пермещаемся на 4-ый байт и выделяем память для названий
data.seekg(4);
for(int 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(int i = 0;i < CountOfFiles;i++)
cout << i+1 << " - " << NameOfFiles[i] << endl;
}
cout << "Введите название файла" << endl
<< "Максимум 28 символов" << endl;
string Temp;
cin >> Temp;
Temp += ".txt";
if(Temp.size() < 32)
{
const char *name = Temp.data();
NameOfFiles[CountOfFiles] = new char[MAX_PATH];
//копируем название нового файла
strncpy(NameOfFiles[CountOfFiles],name,Temp.size());
NameOfFiles[CountOfFiles][Temp.size()] = '\0';
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;
system("pause");
return 0;
} |
|
0
|