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

Проецирование файлов данных - C++

Восстановить пароль Регистрация
 
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
03.09.2013, 19:28     Проецирование файлов данных #1
Помогите плиз прогу дописать никак не получаеться.
вот код
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
#include <windows.h>
#include <stdio.h>
 
main()
{
    char* lpMapAddress;
    HANDLE File=CreateFile("data.txt", 
                                       GENERIC_READ|GENERIC_WRITE,
                                              FILE_SHARE_READ|FILE_SHARE_WRITE, 
                       NULL, 
                       OPEN_EXISTING,
                                              FILE_ATTRIBUTE_NORMAL, 
                        NULL);
    HANDLE hMapFile = CreateFileMapping(File,
                                                                        NULL, 
                                                                       PAGE_READWRITE, 
                                                                       0, 
                                                                       0, 
                                                                      "MyFileMappingObject"); 
 
    if (hMapFile == NULL) 
    { 
      printf("Could not create file-mapping object.\n"); 
    } 
 
    lpMapAddress =(char*) MapViewOfFile(hMapFile, 
                                 FILE_MAP_ALL_ACCESS, 
                                 0, 
                                 0, 
                                 0); 
 
    if (lpMapAddress == NULL) 
    { 
      printf("Could not map view of file.\n"); 
    } 
 
    hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, 
                                                      FALSE, 
                                                     "MyFileMappingObject"); 
 
    if (hMapFile == NULL) 
    { 
      printf("Could not open file-mapping object.\n"); 
    } 
 
    if (!UnmapViewOfFile(lpMapAddress)) 
    { 
      printf("Could not unmap view of file.\n"); 
    }
 
    CloseHandle(hMapFile); 
 
 
    if (!FlushViewOfFile(lpMapAddress, 10)) 
    { 
      printf("Could not flush memory to disk.\n"); 
    } 
    getchar();
}
Добавлено через 44 минуты
Простите не сказал что сделать надо...

Проецировать файл данных, в спроецированном файле посчитать сумму ASCII всего файла.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1438 / 652 / 86
Регистрация: 03.06.2009
Сообщений: 3,284
Завершенные тесты: 1
03.09.2013, 21:06     Проецирование файлов данных #2
Как-то так:
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
#include <windows.h>
#include <stdio.h>
 
void main()
{
    BYTE* lpMapAddress;
    int sum=0;
    HANDLE File=CreateFile("data.txt", 
                                       GENERIC_READ|GENERIC_WRITE,
                                              FILE_SHARE_READ|FILE_SHARE_WRITE, 
                       NULL, 
                       OPEN_EXISTING,
                                              FILE_ATTRIBUTE_NORMAL, 
                        NULL);
    HANDLE hMapFile = CreateFileMapping(File,
                                                                        NULL, 
                                                                       PAGE_READWRITE, 
                                                                       0, 
                                                                       0, 
                                                                      0); 
 
    if (hMapFile == NULL) 
    { 
      printf("Could not create file-mapping object.\n"); 
    } 
 
    lpMapAddress =(BYTE*) MapViewOfFile(hMapFile, 
                                 FILE_MAP_ALL_ACCESS, 
                                 0, 
                                 0, 
                                 NULL); 
 
    if (lpMapAddress == NULL) 
    { 
      printf("Could not map view of file.\n"); 
    } 
 
    for (int i=0;i<GetFileSize(File,0);i++)sum+=lpMapAddress[i];
 
 
 
    if (!UnmapViewOfFile(lpMapAddress)) 
    { 
      printf("Could not unmap view of file.\n"); 
    }
 
    CloseHandle(hMapFile); 
    CloseHandle(File); 
    printf("Sum=%d",sum);
    getchar();
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.09.2013, 21:13     Проецирование файлов данных #3
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
#include <windows.h>
#include <stdio.h>
 
DWORD sumASCII(char* str, DWORD fileSize)
{
    DWORD sum = 0;
    char *end = str + fileSize;
    
    for (  ; str != end; ++str)
        sum += *str;
    return sum;
}
 
int main()
{
    char* lpMapAddress = NULL;
    
    HANDLE File = CreateFile("data.txt", 
        GENERIC_READ|GENERIC_WRITE,
        FILE_SHARE_READ|FILE_SHARE_WRITE, 
        NULL, 
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL, 
        NULL);
    
    HANDLE hMapFile = CreateFileMapping(File,
        NULL, 
        PAGE_READWRITE, 
        0, 
        0, 
        "MyFileMappingObject"); 
 
    if (hMapFile == NULL) 
    { 
        printf("Could not create file-mapping object.\n"); 
    } 
    else
    {
        DWORD fileSize = GetFileSize(File, NULL);
        
        lpMapAddress = (char*)MapViewOfFile(hMapFile, 
        FILE_MAP_ALL_ACCESS, 
        0, 
        0, 
        fileSize); 
 
        if (lpMapAddress == NULL) 
        { 
            printf("Could not map view of file.\n"); 
        } 
 
        DWORD sum = sumASCII(lpMapAddress, fileSize);
        printf("%d\n", sum); 
    }
    
    CloseHandle(File); 
    CloseHandle(hMapFile); 
    UnmapViewOfFile(lpMapAddress);
    
    getchar();
    return 0;
}
MrWoolf
3 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 60
04.09.2013, 00:51  [ТС]     Проецирование файлов данных #4
alsav22, огромное спасибо
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.09.2013, 01:12     Проецирование файлов данных #5
Один else забыл поставить:
C++
1
2
3
4
5
6
7
8
9
10
11
...
        if (lpMapAddress == NULL) 
        { 
            printf("Could not map view of file.\n"); 
        } 
        else
        {
            DWORD sum = sumASCII(lpMapAddress, fileSize);
            printf("%d\n", sum);
        } 
...
Tsentyrion
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 16
09.09.2013, 23:14     Проецирование файлов данных #6
Люди, а сложно переделать эту прогу чтоб она в спроецырованом файле посчитала количество слов.
Помогите пожалуйста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2013, 12:55     Проецирование файлов данных
Еще ссылки по теме:

Обработка строковых данных с использованием внешних файлов C++
Сравнить содержимое файлов между собой, и если оно совпадает, то вывести на экран имена этих файлов C++
C++ Парсинг файлов формата IFC и построение дерева TreeView на основе полученных данных

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.09.2013, 12:55     Проецирование файлов данных #7
Цитата Сообщение от Tsentyrion Посмотреть сообщение
посчитала количество слов.
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
#include <stdio.h>
#include <cctype>
 
DWORD number_words(char* str, DWORD fileSize)
{
    DWORD num = 0;
    char *end = str + fileSize;
    char cur = '\0';
    char last = '\0';
    
    for (  ; str != end; ++str)
    {
        cur = *str;
        if (!std::isalnum(unsigned char(cur)) && std::isalnum(unsigned char(last)))
            ++num;
        last = cur;
    }
    if (std::isalnum(unsigned char(last))) ++num;
    return num;
}
 
int main()
{
    char* lpMapAddress = NULL;
    
    HANDLE File = CreateFile("data.txt", 
        GENERIC_READ|GENERIC_WRITE,
        FILE_SHARE_READ|FILE_SHARE_WRITE, 
        NULL, 
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL, 
        NULL);
    
    HANDLE hMapFile = CreateFileMapping(File,
        NULL, 
        PAGE_READWRITE, 
        0, 
        0, 
        "MyFileMappingObject"); 
 
    if (hMapFile == NULL) 
    { 
        printf("Could not create file-mapping object.\n"); 
    } 
    else
    {
        DWORD fileSize = GetFileSize(File, NULL);
        
        lpMapAddress = (char*)MapViewOfFile(hMapFile, 
        FILE_MAP_ALL_ACCESS, 
        0, 
        0, 
        fileSize); 
 
        if (lpMapAddress == NULL) 
        { 
            printf("Could not map view of file.\n"); 
        } 
        else
        {
            DWORD num = number_words(lpMapAddress, fileSize);
            printf("%d\n", num);
        } 
    }
    
    CloseHandle(File); 
    CloseHandle(hMapFile); 
    UnmapViewOfFile(lpMapAddress);
    
    getchar();
    return 0;
}
Yandex
Объявления
10.09.2013, 12:55     Проецирование файлов данных
Ответ Создать тему
Опции темы

Текущее время: 22:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru