2 / 2 / 0
Регистрация: 04.08.2016
Сообщений: 15
1

Не могу корректно переписать элементы из одного массива в другой

23.08.2016, 16:30. Показов 1392. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно разработать программу, которая печатала бы имена криптопровайдеров. Для это нужно создать символьный массив из 80 элементов и переписать в них элементы из области pszName.
Исходный код выдает ошибку: error C2440: '=' : cannot convert from 'LPTSTR' to 'char [80]'
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdlib.h> 
#include <string.h>
#include <wtypes.h>//Определяет типы данных для CryptoAPI
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[]){
DWORD dwIndex=0;//Индекс криптопровайдера
DWORD dwType;//Тип криптопровайдера
DWORD cbName;//Имя типа криптопровайдера
LPTSTR pszName;
char name[80];
for(char i=0;i>80;i++)
name=pszName;
cout << name<<endl;
while (CryptEnumProviders(dwIndex, NULL, 0, &dwType, NULL, &cbName)){
  if (!cbName)//Если определить размер не удалось, то завершаем
      break; 
  if (!(pszName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
    return 0;//Если память не выделена, то завершаем 
  if (!CryptEnumProviders(dwIndex++, NULL, 0, &dwType, pszName, &cbName)){ 
   std::cout<<"Ошибка - CryptEnumProviders";//Не создали провайдер,
    return 0;//поэтому завершаем
  }
  std::cout<<"--------------------------------"<<std::endl;
  std::cout<<"Provider name: "<< pszName <<std::endl; 
  std::cout<<"Provider type: "<<dwType<<std::endl;
  LocalFree(pszName);//Освобождаем занятую память
}
getch();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2016, 16:30
Ответы с готовыми решениями:

Элементы из одного массива переписать в другой
1. Написать на языке Си программу, которая вычисляет сумму : S=1+1*2+1*2*3+1*2*3*4+…+1*2*3*4*…*n,...

Переписать элементы с массива с одного в другой
11.246* Дан массив. Переписать его элементы в другой массив такого же размера следующим образом:...

Переписать элементы одного массива в другой по правилу
В общем необходимо переписать элементы массива X, удовлетворяющие -1&lt;X&lt;1, в массив Y и подсчитать...

Матрица. Переписать по столбцам элементы из одного массива в другой
помогите решить очень надо

5
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
23.08.2016, 16:32 2
В настройках проекта что установлено - ANSI или UNICODE ?
1
2 / 2 / 0
Регистрация: 04.08.2016
Сообщений: 15
23.08.2016, 17:02  [ТС] 3
В настройках установлен UNICODE
0
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
23.08.2016, 20:31 4
LPTSTR это wchar_t* если unicode. Если ты хочешь LPTSTR преобразовать в char*, то вначале приведи его к wchar_t*
1
2 / 2 / 0
Регистрация: 04.08.2016
Сообщений: 15
23.08.2016, 21:39  [ТС] 5
Я с этой темой сталкиваюсь впервые, и честно сказать не совсем понимаю как это сделать
0
nd2
3434 / 2813 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
24.08.2016, 03:45 6
Лучший ответ Сообщение было отмечено Моеимя как решение

Решение

Цитата Сообщение от Моеимя Посмотреть сообщение
Нужно разработать программу, которая печатала бы имена криптопровайдеров. Для это нужно создать символьный массив из 80 элементов и переписать в них элементы из области pszName.
Для того, чтобы просто печатать, массив не нужен.
Цитата Сообщение от Моеимя Посмотреть сообщение
В настройках установлен UNICODE
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdlib.h> 
#include <string.h>
#include <wtypes.h>//Определяет типы данных для CryptoAPI
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    DWORD dwIndex=0;//Индекс криптопровайдера
    DWORD dwType;//Тип криптопровайдера
    DWORD cbName;//Имя типа криптопровайдера
    LPWSTR pszName = nullptr;
    //char name[80];
    //for(char i=0;i>80;i++)
        //name=pszName;
    //cout << name<<endl;
    while (CryptEnumProviders(dwIndex, NULL, 0, &dwType, NULL, &cbName))
    {
        if (!cbName)//Если определить размер не удалось, то завершаем
            break; 
        if (!(pszName = (LPWSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
            return 0;//Если память не выделена, то завершаем 
        if (!CryptEnumProviders(dwIndex++, NULL, 0, &dwType, pszName, &cbName))
        { 
            std::cout<<"Ошибка - CryptEnumProviders";//Не создали провайдер,
            return 0;//поэтому завершаем
        }
        std::cout<<"--------------------------------"<<std::endl;
        std::wcout<<"Provider name: "<< pszName <<std::endl; 
        std::cout<<"Provider type: "<<dwType<<std::endl;
        LocalFree(pszName);//Освобождаем занятую память
    }
    getch();
    return 0;
}
1
24.08.2016, 03:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2016, 03:45
Помогаю со студенческими работами здесь

Динамический массив. Переписать элементы из одного массива в другой
Дан массив &quot;Array&quot;, размер и элементы задаются с клавиатуры. Создать динамический массив, в...

Как переписать все положительные элементы с одного массива в другой
Мои наработки: #include &lt;iostream&gt; using namespace std; int main() { int n; cout...

Из одного массива в другой переписать сначала положительные элементы, затем отрицательные
program P7; uses crt; var Z: array of integer; R: array of integer; i,k: integer; Begin...

Из одного массива переписать отрицательные элементы в другой массив и упорядочить их по возрастанию
Прив. всем. Немного не могу правильно составить программу по сортировке массива - задача такая : Из...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru