Студентам с вопросами о лабораторных работах сюда

Тема в разделе "WASM.BEGINNERS", создана пользователем IceStudent, 11 ноя 2006.

  1. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    JangaMa
    Можно, но для этого придётся его читать побайтно.
     
  2. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    наверное глупый вопрос.... как выделить динамический массив, а потом его "грохнуть"?)
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    JangaMa
    Обращаться можно как обычно - p[index]
     
  4. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    получается мне сейчас p использовать вместо Name? а его объявить до цикла?
    и куда поставить free(p);?
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Делаешь: char* p = (char*)malloc(10);
    Копирушь байты из "Name" в "p": memcpy(p, Name, 10);
    Передаёшь "р" в поток.
    Выводишь в потоке имя.
    Делаешь в потоке: free(pvParam);

    И так для каждого имени, то есть это всё внутри цикла.

    Ещё вариант завести массив указателей на имена.
     
  6. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    все равно не работает.... (( при первом запуске все правильно. а потом каждый раз по разному выводит. что делать????
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    JangaMa
    Покажи код.
     
  8. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    вот код:

    #include "stdafx.h"
    #include "conio.h"
    #include "windows.h"
    #include "process.h"
    #include "stdlib.h"
    #include "string.h"
    CRITICAL_SECTION gs;


    DWORD WINAPI Thread1 (PVOID pvParam)
    {
    //EnterCriticalSection (&gs);
    char* tname = (char*) pvParam;
    printf ("%s\n", tname);
    free(pvParam);
    //HANDLE f;
    //tab=CreateFile (D, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
    //LeaveCriticalSection (&gs);
    return 0;
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
    char S[20]="C:\\tables.txt";
    char pBuffer [100];
    DWORD id1;
    int k=0;
    char Name [10];
    DWORD read;
    HANDLE tab;
    tab=CreateFile (S, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    int fsize=GetFileSize (tab, NULL);
    ReadFile (tab, pBuffer, fsize, &read, NULL);
    HANDLE h[3];
    int i=0;
    int j=0;
    while (j<3)
    {
    char* p = (char*)malloc(10);
    while (pBuffer!='\n')
    {
    Name [k]=pBuffer;
    i++;
    k++;
    }
    Name [k]='\n';
    Name [++k]='\0';
    memcpy(p, Name, 10);
    //InitializeCriticalSection (&gs);
    h[j]=CreateThread (NULL,0,Thread1,p,0,&id1);
    k=0;
    j++;
    i++;
    }
    getch();
    CloseHandle (tab);
    //fclose (f);
    return 0;
    }
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Скопировал твой последний код, у меня тип-топ выводит три разных имени, сколько ни запускал, всё нормально.
     
  10. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    )) оригинально... у меня не выводит)) у меня может вывести 4 строки вместо трех... меняет строки местами... что делать????
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Вот мой файл, попробуй с ним.
     
  12. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    ой... вообще выводит только одну строку, а потом вот такое сообщение:
    Unhandled exception at 0xcccccccc in НОВЫЙ1.exe: 0xC0000005: Access violation reading location 0xcccccccc.
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    А чем ты собираешь? Какой-то _TCHAR, в VS вроде TCHAR.
     
  14. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    не совсем вопрос поняла... что я собираю?? наверное мой ответ должен быть: Microsoft Visual Studio .NET 2003. ты это спрашивал?
     
  15. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Собираешь проект. Тогда не понимаю как у тебя это вообще собирается, у меня-то тоже VS2003, но мне пришлось чуток подправить твой код, чтобы собралось. Можешь выложить свой проект, вот мой.
     
  16. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    еще один глупый вопрос)): как его сюда выложить?
     
  17. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Нажимаешь под сообщениями ссылку "ответить", а далее думаю найдёшь.
     
  18. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
     
  19. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Когда нажимаешь эту ссылку, то чуть ниже будет кнопка "обзор"
     
  20. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    я его уже добавляла. вот еще раз