Я пытаюсь создать процессы для своего проекта. Я буду аргументами pas для дочернего процесса от родителя, и аргумент изменится со временем, поэтому я хотел попробовать сначала передать 1 ребенку. Формат строки должен быть таким, как «childname.exe c», где c представляет случайный символ (в данном случае это 1 для просто пробной версии).Получение первой строки из строкового массива в c
Я создал массив дочерних имен, и все, что мне нужно, это объединить новую строку с дочерней строкой и скопировать ее в другой массив строк (переменная lpCommandLine). Когда я отлаживал код ниже, я увидел, что child_name [0] (когда i равно 0) возвращает только «C», хотя я ожидал, что он вернет «ChildProj1.exe». Есть ли точка, которую я пропустил или как это сделать в c?
здесь есть образ того, что я GetIn отладчик: here stored values of in variables
#define NO_OF_PROCESS 3
char *child_names[]= {"ChildProj1.exe", "ChildProj2.exe", "ChildProj3.exe" };
char* lpCommandLine[NO_OF_PROCESS];
int i;
for (i = 0; i < NO_OF_PROCESS; i++)
lpCommandLine[i] = (char *)malloc(sizeof(char) * 16);
for (i = 0; i < NO_OF_PROCESS; i++)
{
strcat_s(child_names[i], strlen(child_names[i]), " 1");
strcpy_s(lpCommandLine[i], strlen(lpCommandLine[i]), child_names[i]);
}
где вы думаете, новая строка « 1» будет сохранена. strcat_s не удалось, потому что вы пытались добавить символы в буфер - проверьте возвращаемое значение srcat_s –
pm100
@ Y.E.S. Неясно, что вы собираетесь получить в массиве lpCommandLine. Покажите его содержимое. –
Я хочу, чтобы он хранился в lpCommandLine.В массиве child_names 0-я строка - «ChildProj1.exe», и я хочу, чтобы lpCommandLine [0] был «ChildProj1.exe 1». Итак, вы предлагаете выделить память для каждого индекса child_names для 16 символов, что означает ChildProj1.exe + 3 (для пустого и 1 и \ 0) –