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

Обработка строки из файла в порожденном процессе(потоке) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выручите пожалуйста http://www.cyberforum.ru/cpp-beginners/thread733668.html
4). Разработать функцию для вычисления минимального значения элементов одномерного целочисленного массива размерности n. С использованием данной функции для матрицы размерности n х m (n и m вводится...
C++ Вычисление минимального значения элементов массива 3). Разработать функцию для вычисления минимального значения элементов одномерного целочисленного массива размерности n. С использованием данной функции для матрицы размерности n х m (n и m вводится... http://www.cyberforum.ru/cpp-beginners/thread733665.html
Сортировка одномерного массива размерности n в порядке убывания C++
2). Разработать функцию для сортировки элементов одномерного целочисленного массива размерности n в порядке убывания. С использованием данной функции для матрицы размерности n х m (n и m вводится с...
Сортировка Shell сорт C++
Нашел в интернете лучший набор для сортировки до 4000 элементов. 1, 4, 10, 23, 57, 132, 301, 701, 1750 начиная, конечно, с конца, мы доходим до единицы и получается сортируем BubbleSort-ом в итоге...
C++ Определить, содержит ли массив серии из подряд стоящих простых чисел http://www.cyberforum.ru/cpp-beginners/thread733643.html
Задан массив из целых чисел.Определить содержит ли массив серии из подряд стоящих простых чисел.Если да,то посчитать кол-во таких серий.Удалить из массива все двузначные числа.Определить, изменилось...
C++ Считать информацию с файла и вывести на экран используя "Очередь" Помогите исправить ошибку. Нужно считать информацию с файла и вывести на экран используя "Очередь". #include<fstream.h> #include<iostream.h> #include<stdio.h> struct record {char name; ... подробнее

Показать сообщение отдельно
footbaler
1 / 1 / 0
Регистрация: 18.12.2010
Сообщений: 50
19.01.2013, 19:42  [ТС]
go, у меня есть исходник однокурсницы. У нас один вариант. Ей делал знакомый. Я, в нем, не могу разобраться. Он вообще соответствует заданию?
Код
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
#include <stdafx.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <tchar.h>
#include <strsafe.h>
 
#define MAX_THREADS 3
#define BUF_SIZE 255
 
char str1[] = {"ГЊГ®Г*äåî"};
char str2[] = {"Fiat"};
char str3[] = {"ÏåðåäГ*"};
 
DWORD WINAPI MyThreadFunction( LPVOID lpParam );
void ErrorHandler(LPTSTR lpszFunction);
 
int _tmain()
{
    char pDataArray[255] = { str1[255], str2[255],str3[255]};
    DWORD   dwThreadIdArray[MAX_THREADS];
    HANDLE  hThreadArray[MAX_THREADS]; 
 
    // Create MAX_THREADS worker threads.
 
    for( int i=0; i<MAX_THREADS; i++ )
    {
        // Allocate memory for thread data.
 
        pDataArray[i] = (char) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
                sizeof(char));
 
        if( pDataArray[i] == NULL )
        {
           // If the array allocation fails, the system is out of memory
           // so there is no point in trying to print an error message.
           // Just terminate execution.
            ExitProcess(2);
        }
 
        // Create the thread to begin execution on its own.
 
        hThreadArray[i] = CreateThread( 
            NULL,                   // default security attributes
            0,                      // use default stack size  
            MyThreadFunction,       // thread function name
            &pDataArray[i],          // argument to thread function 
            0,                      // use default creation flags 
            &dwThreadIdArray[i]);   // returns the thread identifier 
 
 
        // Check the return value for success.
        // If CreateThread fails, terminate execution. 
        // This will automatically clean up threads and memory. 
 
        if (hThreadArray[i] == NULL) 
        {
           ErrorHandler(TEXT("CreateThread"));
           ExitProcess(3);
        }
    } // End of main thread creation loop.
 
    // Wait until all threads have terminated.
 
    WaitForMultipleObjects(MAX_THREADS, hThreadArray, TRUE, INFINITE);
 
    // Close all thread handles and free memory allocations.
 
    for(int i=0; i<MAX_THREADS; i++)
    {
        CloseHandle(hThreadArray[i]);
        if(pDataArray[i] != NULL)
        {
            HeapFree(GetProcessHeap(), 0, &pDataArray[i]);
            pDataArray[i] = NULL;    // Ensure address is not reused.
        }
    }
 
    return 0;
}
 
 
DWORD WINAPI MyThreadFunction( LPVOID lpParam ) 
{ 
    HANDLE hStdout;
    char pDataArray[255];
 
    TCHAR msgBuf[BUF_SIZE];
    size_t cchStringSize;
    DWORD dwChars;
 
    // Make sure there is a console to receive output results. 
 
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    if( hStdout == INVALID_HANDLE_VALUE )
        return 1;
 
    // Cast the parameter to the correct data type.
    // The pointer is known to be valid because 
    // it was checked for NULL before the thread was created.
  char str[255] = { 0 };
 
    FILE* Infile = NULL;
 
    do
    {
        Infile = fopen("K:\\Work\\free-lance\\Visual C\\Ïîòîêè ÂèêГ*\\cursach\\Debug\\123.txt", "r+");     
    }
    while(Infile == NULL);
    printf("Enter text to find: ");
    fgets(pDataArray, 255, stdin);
    pDataArray[strlen(pDataArray) - 1] = '\0';
    
 
    while(fgets(str, 255, Infile) != NULL)
    {
        char* tmp_ptr = strstr(str, pDataArray);
        while(tmp_ptr != NULL)
        {
            printf("%s", "ГЌГ*éäåГ*Г* ñòðîêГ*");
        }       
    }
 
    fclose(Infile);
 
    return 0; 
} 
 
 
 
void ErrorHandler(LPTSTR lpszFunction) 
{ 
    // Retrieve the system error message for the last-error code.
 
    LPVOID lpMsgBuf;
    LPVOID lpDisplayBuf;
    DWORD dw = GetLastError(); 
 
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dw,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL );
 
    // Display the error message.
 
    lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, 
        (lstrlen((LPCTSTR) lpMsgBuf) + lstrlen((LPCTSTR) lpszFunction) + 40) * sizeof(TCHAR)); 
    StringCchPrintf((LPTSTR)lpDisplayBuf, 
        LocalSize(lpDisplayBuf) / sizeof(TCHAR),
        TEXT("%s failed with error %d: %s"), 
        lpszFunction, dw, lpMsgBuf); 
    MessageBox(NULL, (LPCTSTR) lpDisplayBuf, TEXT("Error"), MB_OK); 
 
    // Free error-handling buffer allocations.
 
    LocalFree(lpMsgBuf);
    LocalFree(lpDisplayBuf);
}


Добавлено через 40 минут
go, где можно почитать теорию про создание процессов, потоков, что бы максимально понятно было? А то, у меня, уже все перемешалось в голове и я не знаю, что делать.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru