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

Подсчёт даты и winapi - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ последовательность чисел http://www.cyberforum.ru/cpp-beginners/thread756458.html
Цель: Изучение приемов работы с одномерными статическими и динамическими массивами. Изучение операций new, delete, . Изучение форматированного файлового ввода-вывода. Выработка навыков разбиения...
C++ гистограммы а с++ Цель: Изучение приемов работы с данными, организованными в однонаправленные связанные динамические списки. Задание: В командной строке, а если нет, то в консольном меню вводятся имена файлов,... http://www.cyberforum.ru/cpp-beginners/thread756455.html
Вычислить значение для float при использовании pow C++
Добрый день! При вычислении выражения двумя типами float и double столкнулся со следующей проблемой. При использовании pow для float значения слишком отличны. Почему? #include <iostream>...
Как сделать мини-игру Шарики C++
Всем привет, надо сделать мини-игру Шарики собственно прикрепил рисунок мини - игры. Схема такая : Когда нажимаешь на кнопки расположенные между кнопкой ,шарики двигаются по часовой. Пример:...
C++ Наследование Классов с++ http://www.cyberforum.ru/cpp-beginners/thread756424.html
при компицяции выдаёт Unresolved external 'chelovek::chelovek(int,int,int)' referenced from ...*.OBJ В чом ошибка??? #include <vcl.h> #pragma hdrstop #include "Unit1.h"...
C++ Составить блок-схему помогите составить блок-схему для этой программы. программа перемножающая два многочлена(полинома) #include <iostream> #include <sstream> #include <string> #include <stdlib.h> #include <stdio.h>... подробнее

Показать сообщение отдельно
hvz-
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 14
12.01.2013, 20:26  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
cмысл? А впрочем, вот:
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
#include <stdio.h>
#include <string.h>
int main () {
 
 int x= 23;
 int y= 56;
 int z= 100;
 
 char array [20];
 
 char* temp= &array [sizeof(array)- sizeof(int)* 3];
 
 memcpy (temp, (char*)&x, sizeof(int));
 temp+=sizeof(int);
 memcpy (temp, (char*)&y, sizeof(int));
 temp+=sizeof(int);
 memcpy (temp, (char*)&y, sizeof(int));
 
 for (int i= 0; i< 20; i++ ) {
  printf ("%x ", (unsigned char)array [i]);
 }
 
 getchar ();
 return 0;
}
ещё что спросишь?
Не спрошу, ибо с sprintf() намного легче + ваш вариант не рабочий, выводил не то что нужно. (VS2010)

Цитата Сообщение от Agent Smith Посмотреть сообщение
может чтобы первое число было на первом месте, а не на нулевом? ну и все остальные тоже чтобы были на своих местах
Совершенно верно!

Но теперь возникла другая проблема - почему то не хочет принимать параметры. Прилагаю исходники:
Кликните здесь для просмотра всего текста
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
// MASTER
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include "windows.h"
 
void printColor(char* text, int color)
{
    HANDLE hConsole;
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, color);
    printf("%s",text);
    SetConsoleTextAttribute(hConsole, 7);
}
 
int main(int argc, char *argv[])
{
    // генерация даты: числа, месяца и года
    int day, month, year;
    srand((unsigned)time(NULL));
    day = rand()%31+1;
    month = rand()%12+1;
    year = rand()%13+2000;
 
    // выводим сгенерированную дату
    char master[] = "Master: ";
    char date[15];
    printColor(master, 5);
    printf("Generated date: ");
    sprintf(date, "%d %d %d \n", day, month, year);
    printColor(date, 9);
 
    // получаем идентификатор процесса master.exe
    unsigned short int procID = GetCurrentProcessId();
    char procID_c[15];
    printColor(master, 5);
    printf("master.exe Process ");
    sprintf(procID_c, "ID = %d \n", procID);
    printColor(procID_c, 9);
 
    // переменная пути с параметрами для запуска
    char path[50]; 
    
    // переводим целые числа в символы
    char day_c[3];
    _itoa(day, day_c, 10);
    char month_c[3];
    _itoa(month, month_c, 10);
    char year_c[5];
    _itoa(year, year_c, 10);
 
    // создаём строку для запуска slave.exe с параметрами
    sprintf(path, "slave.exe by_master %s %s %s %d", &day_c, &month_c, &year_c, procID); 
    
    printColor(master, 5);
    printf("Start slave.exe with this params: %s\n", path);
 
    // запускаем процесс slave.exe
    DWORD dwExitCode;
    STARTUPINFO cif;
    ZeroMemory(&cif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
    if (CreateProcess(TEXT("slave.exe"), (LPWSTR)path, NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi)==TRUE) // если получилось, ждём пока не завершится процесс slave.exe
    {
        printColor(master, 5);
        printf("Process slave.exe ");
        printColor("created!\n", 2);
        if (WaitForSingleObject(pi.hProcess,INFINITE)!=WAIT_FAILED) // если процесс slave.exe не отвечает, завершаем процесс и выходим из программы
        {
            TerminateProcess(pi.hProcess, GetExitCodeProcess(pi.hProcess,&dwExitCode));
            printColor(master, 5);
            printf("Process slave.exe terminated. Press any key to exit...");
            _getch();
            return 0;
        }
    }
    else // если не получилось запустить процесс slave.exe, выходим из программы
    {
        printColor(master, 5);
        printf("Process slave.exe ");
        printColor("not created\n", 4);
        printColor(master, 5);
        printf("Press any key to exit...");
        _getch();
        return 0;
    }
}


Кликните здесь для просмотра всего текста
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
// SLAVE
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include "windows.h"
 
void printColor(char* text, int color)
{
    HANDLE hConsole;
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, color);
    printf("%s",text);
    SetConsoleTextAttribute(hConsole, 7);
}
 
 
int main(int argc, char *argv[])
{
    char slave[] = "Slave: ";
    unsigned short int day=0, month=0, year=0, procID=0;
    long int years_passed = 730500; // колличество дней с рождества христова по состоянию на 2000ый год
 
    // определяем, есть ли аргументы
    if(argc == 1)
    {
        printColor(slave, 11);
        printf("No input arguments! Press any key to exit...\n");
        _getch();
        return 0;
    }
    else if(argc > 1)
    {
        // определяем кем была запущена программа
        if(strcmp(argv[1], "by_master"))
        {
            printColor(slave, 11);
            printf("Slave launched by master.\n");
        }
        else
        {
            printColor(slave, 11);
            printf("Slave launched by itslef.\n");
        }
 
        // принимаем параметры
        day = atoi(argv[2]);
        month = atoi(argv[3]);
        year = atoi(argv[4]);
        procID = atoi(argv[5]);
    }
 
    printColor(slave, 11);
    printf("%d %d %d %d \n", day, month, year, procID);
    _getch();
    return 0;
}

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