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

[C] ReadFile/WriteFile - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подсчитать кол-во одинаковых элементов каждого значения http://www.cyberforum.ru/cpp-beginners/thread763118.html
Дан массив целых чисел, причём каждое из них принадлежит диапазону . Упорядочить элементы массива (отсортировать) по возрастанию. Для этого использовать дополнительный массив. Подсчитать количество одинаковых элементов каж-дого значения, т.е. количество 1-ц, 2-ек, … 100-ок. Затем заполнить первоначальный массив по порядку полученным количеством 1-ц, 2-ек, … 100-ок. С сортировкой проблем нет,...
C++ Вывести фигуру звездочками Ребята, задали задачу не могу докумекать Нужно составить програмку, которая выдает на экран такую фигуру Нули не нужны, только звездочки. 000 * 00*000* * 000000* Циклы использовать нельзя, как и пробелы думал через \t но получается слишком растянуто http://www.cyberforum.ru/cpp-beginners/thread763117.html
error C3867 C++
Списал код из учебника. Наверное, там где-то опечатка, так как при компиляции возникает ошибка. #include <iostream> using namespace std; class Mammal { public: Mammal():itsAge(1) { } virtual ~Mammal() { } virtual void Speak() const = 0;
C++ Вложенные конечные автоматы
Задание: Добавить возможность использовать в таблице переходов в качестве элемента ссылку на конечный автомат из ранее загруженных. Ниже предлагаю архив в котором почти все реализовано, но почему то ссылка не записывается( не могу найти почему...Нужно чтобы работало хотя бы для двух автоматов, которые считывает с текстовых файлов, которые также прилагаются к архиву. Очень надеюсь на помощь или...
C++ Выбор слова или словосочетания из списка http://www.cyberforum.ru/cpp-beginners/thread763075.html
Здравствуйте, помогите пожалуйста. Нужна простая программа которая будет делать рандомный выбор 1 слова или словосочетания из списка (через запятую или с новой строки) по типу: Вася, Petya, Наша Маша, К0cт9 или Вася Petya
C++ Ошибка LNK2019 Помогите разобраться с этой ошибкой. В программировании я еще новичок, поэтому не все пока понимаю. Задача состоит в том что надо перемножить 2 массива любой размерности. И получаются у меня такие ошибки 1>------ Построение начато: проект: exersice1, Конфигурация: Debug Win32 ------ 1> main.cpp 1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl mas1(int *,int)"... подробнее

Показать сообщение отдельно
hvz-
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 14

[C] ReadFile/WriteFile - C++

16.01.2013, 07:55. Просмотров 644. Ответов 3
Метки (Все метки)

Всем доброго времени суток!
Есть вроблема с програмкой ,а именно: Unhandled exception at 0x010b1493 in lab3.exe: 0xC0000005: Access violation reading location 0x00000000.

Исходник:
Кликните здесь для просмотра всего текста
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <shlobj.h>
 
struct Student
{
    int code;
    char name[20];
    char surname[20];
    char group[10];
};
 
BOOL CheckStudentDirAndFile(void);
void MakeStudents(Student *st);
void WriteStudentsToFile(Student *st, int stud_number, DWORD *nb);
void ReadStudentsFromFile(int stud_number, DWORD *nb);
void CopyStudentsToDocs(void);
 
int main()
{
    if(CheckStudentDirAndFile() == TRUE)
    {
        HANDLE hFindFile;
        WIN32_FIND_DATAA fdFindData;
        SYSTEMTIME smSysTime;
        hFindFile=FindFirstFileA("C:\\Student\\stud.dat",&fdFindData);
        if(hFindFile != INVALID_HANDLE_VALUE)
        {
            FileTimeToSystemTime(&fdFindData.ftLastWriteTime, &smSysTime);
            printf("%s\t%d.%d.%d  %d:%d\n",fdFindData.cFileName,smSysTime.wDay,smSysTime.wMonth,smSysTime.wYear, smSysTime.wHour, smSysTime.wMinute);
            FindClose(hFindFile);
            printf("Press any key to exit...\n");
            _getch();
            return 0;
        }
    }
    else
    {
        DWORD nb;
        int stud_number=0;
        printf("Enter student's number: ");
        scanf_s("%d", &stud_number);
        Student* st=new Student[stud_number];
        for (int i=0;i<stud_number;i++)
            MakeStudents(&st[i]);
 
        WriteStudentsToFile(st, stud_number, &nb);
        ReadStudentsFromFile(stud_number, &nb);
        CopyStudentsToDocs();
        printf("Press any key to exit...\n");
        _getch();
        return 0;
    }
}
 
BOOL CheckStudentDirAndFile(void)
{
    HANDLE hFile;
    WIN32_FIND_DATAA fdFindData;
    hFile=FindFirstFileA(("C:\\Student\\stud.dat"),&fdFindData);
    if(hFile != INVALID_HANDLE_VALUE)
    {
        FindClose(hFile);
        printf("Founded file C:\\Student\\stud.dat!\n");
        return TRUE;
    }
    else
    {
        if(CreateDirectoryA("C:\\Student", NULL))
        {
            printf("Directory C:\\Student created successfully!\n");
            hFile = CreateFileA("C:\\Student\\stud.dat",GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
            
            if(hFile)
                printf("File stud.dat created successfully!\n");
            else
                printf("Can not create file stud.dat in C:\\Student!\n");
 
            CloseHandle(hFile);
            return FALSE;
        }
        else
        {
            printf("Can not create directry C:\\Students! Possibly already exist.\n");
            CloseHandle(hFile);
            return FALSE;
        }
    }
}
 
void MakeStudents(Student *st)
{
    printf("Student code: ");
    scanf_s("%d", &st->code);
    printf("Student name: ");
    scanf_s("%s", &st->name);
    printf("Student surname: ");
    scanf_s("%s", &st->surname);
    printf("Student group: ");
    scanf_s("%s", &st->group);
}
 
void WriteStudentsToFile(Student *st, int stud_number, DWORD *nb)
{
    HANDLE hFile;
    char file_path[] = "C:\\Student\\stud.dat";
    hFile = CreateFileA(file_path, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if(!hFile)
    {
        printf("Error while creating file %s for writing!\n", file_path);
        CloseHandle(hFile);
    }
    else
    {
        SetFilePointer(hFile, 4, NULL, FILE_END);
        for (int i=0;i<stud_number;i++)
            WriteFile(hFile,&i,sizeof(&st[i]),&*nb,NULL);
        CloseHandle(hFile);
        printf("\nStudents writed to file %s\n", file_path);
    }
}
 
void ReadStudentsFromFile(int stud_number, DWORD *nb)
{
    HANDLE hFile;
    char file_path[] = "C:\\Student\\stud.dat";
    hFile = CreateFileA(file_path, GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if(!hFile)
    {
        printf("Error while creating file %s for reading!\n", file_path);
        CloseHandle(hFile);
    }
    else
    {
        printf("%s contains:\n\n", file_path);
        Student *st_buf;
        int i=1;
        ReadFile(hFile, &st_buf, sizeof(Student), &*nb,NULL);
        while (nb!=0)
        {   
            printf("----------%d----------\n", i++);
            printf("Student code: %d\n", st_buf->code);
            printf("Student name: %s\n", st_buf->name);
            printf("Student surname: %s\n", st_buf->surname);
            printf("Student group: %s\n", st_buf->group);
            printf("----------------------\n");
            ReadFile(hFile, &st_buf, sizeof(Student), &*nb, NULL);
        }
        CloseHandle(hFile);
    }
}
 
void CopyStudentsToDocs(void)
{
    char docs_path[50];
    char path[100];
    SHGetFolderPathA(NULL, CSIDL_COMMON_DOCUMENTS, NULL, SHGFP_TYPE_CURRENT, docs_path);
    sprintf_s(path, "%s\\stud.dat", docs_path);
    if(CopyFileA("C:\\Student\\stud.dat", path, TRUE) != FALSE)
        printf("stud.dat copied to %s\n", path);
    else
        printf("Can not copy C:\\Student\\stud.dat file to %s", path);
}

Ошибка выскакивает в функции ReadStudentsFromFile.
Вроде и записываю и читаю правильно, чего я только не делал...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru