Вопрос по д

Тема в разделе "Общие вопросы по С и С++", создана пользователем Arthur, 26 дек 2008.

Статус темы:
Закрыта.
  1. Arthur

    Arthur Гость

    Есть консольное приложение-в нем строковый массив DATA[10], заполненный DATA[1]=1;DATA[2]=2...DATA[n]='M'(значение по умолчанию)
    Требуется создать в новый ДИНАМИЧЕСКИЙ массив(n я знаю) засунуть значения с 1 по n(необходимо для загрузки в буффер обмена)

    Пытался сделать указатель а в него при помощи адресной арифметики (sizeof(char)) запихнуть значения, все получается, НО при выводе помимо необходимого значения выводит символы
    Выделили под указатель 1 байт, программа умудрилась забить туда 4 чара и еще немного мусора осталось!
    DATA3= ( char*) malloc(1);

    Помогите пожалуйста)) Желательно писать попроще... Заранее спасибо


    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Впринципе саму проблему решил, понял что указатель надо заполнять также как массив. То что массив начинается с нуля знаю, но иногда забываю) нулевой бит приписываю вручную. Удивляет лишь одна вешь

    char DATA2[10]; //Создал массив,он заполнен необходимыми мне данными,часть элементов осталась по умолчанию
    char *DATA3;//Указатель
    DATA3=(char *) malloc(1);//Под указатель выделил 1 байт памяти
    DATA3=DATA;// Здесь вопрос: при присваивание указатель будет ссылаться на 1 байт информации? Или сам указатель будет вмещать в себя один байт адреса?



    Вот мои логические умозаключения, посмотрел в книжке там такой пример
    int a[100];
    int *p;
    p=(int*)malloc(50*sizeof(int));

    Написано что выделяется память под 50 целых чисел, т.е. при присваивание
    p=a;

    по логике моей книжке указатель должен ссылаться на участок памяти в которой 50 чисел.


    И еще один вопрос, как в консоли обрабатывать Message?

    Спасибо что обратили внимание))


    /////////////////////////////////////////////////////////////////
    "И еще один вопрос, как в консоли обрабатывать Message?"- немного подразобрался
    Теперь новая проблема:

    HWND thisWnd=FindWindow(L"ConsoleWindowClass", NULL);
    HWND hWnd = FindWindow(L"FineReader8MainWindowClass", NULL );
    MSG msg;

    while(1>0){
    static HWND hNextViewer;
    hNextViewer=SetClipboardViewer(thisWnd);
    a=GetMessage(&msg,NULL, 0,0);
    Sleep(5000);
    if(msg.message==WM_DRAWCLIPBOARD){//Если идет сообщение об изменение буфера обмена
    printf("Press ENTER to take data from you buffer");
    PostMessage(hNextViewer,NULL,NULL,NULL);
    }
    Проблема в том что программа не реагирунт на сообщения постоянно лезет только одно с номером 49367, елси пишу
    GetMessage(&msg,hWnd, 0,0); программа вообще зависает

    Кто сможет напишите свое мнение
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    код приведи, потому как ничего не понятно. ну кроме того что ты не знаешь что индексы массива в С начинаются с 0.
     
  3. Arthur

    Arthur Гость

    Впринципе саму проблему решил, понял что указатель надо заполнять также как массив. То что массив начинается с нуля знаю, но иногда забываю) нулевой бит приписываю вручную. Удивляет лишь одна вешь

    char DATA2[10]; //Создал массив,он заполнен необходимыми мне данными,часть элементов осталась по умолчанию
    char *DATA3;//Указатель
    DATA3=(char *) malloc(1);//Под указатель выделил 1 байт памяти
    DATA3=DATA;// Здесь вопрос: при присваивание указатель будет ссылаться на 1 байт информации? Или сам указатель будет вмещать в себя один байт адреса?



    Вот мои логические умозаключения, посмотрел в книжке там такой пример
    int a[100];
    int *p;
    p=(int*)malloc(50*sizeof(int));

    Написано что выделяется память под 50 целых чисел, т.е. при присваивание
    p=a;

    по логике моей книжке указатель должен ссылаться на участок памяти в которой 50 чисел.


    И еще один вопрос, как в консоли обрабатывать Message?

    Спасибо что обратили внимание))
     
Загрузка...
Похожие Темы - Вопрос по
  1. ApplePen
    Ответов:
    0
    Просмотров:
    57
  2. gURaBA_N
    Ответов:
    3
    Просмотров:
    91
  3. kartaman
    Ответов:
    0
    Просмотров:
    127
  4. Peter
    Ответов:
    4
    Просмотров:
    519
  5. di0d_
    Ответов:
    1
    Просмотров:
    435
Статус темы:
Закрыта.

Поделиться этой страницей