#c #winapi
#c #winapi
Вопрос:
Как мне сохранить выходные данные GetComputerNameA в структуре с массивом символов на c ? Я не знаю, я думаю, мне нужно использовать lpstrcpy?
Я не слишком хорошо знаком с использованием объектов на c .
Комментарии:
1. вы читали руководство ? Вы не сохраняете выходные данные, вы вызываете функцию, и функция сохраняет выходные данные в буфере. Вы только указываете функции, где найти буфер
2. Да, я прочитал руководство. Вы правы, функция сохраняет выходные данные в буфере. Но вот с чем у меня проблемы, я не знаю, как создать объект для буфера
3. @4p0cryph0n, а как насчет массива символов?
Ответ №1:
#include <windows.h>
#include <stdio.h>
struct Computer
{
char name[MAX_COMPUTERNAME_LENGTH 1 ];
};
void main()
{
DWORD cchComputerName = MAX_COMPUTERNAME_LENGTH 1;
Computer computer = { 0 };
if (!GetComputerNameA(amp;computer.name[0], amp;cchComputerName))
{
printf("Failed to get computer name, Error: %urn", GetLastError());
}
else
{
printf("Computer Name: %srn", computer.name);
}
}
Комментарии:
1.
void main
— В соответствии со стандартом C ,main
в идеале должен возвращатьсяint
. Приmain
этом вы можете опустить return в конце — компилятор добавит его для вас.int main
— Всегда!2.
amp;computer.name[0]
может быть простоcomputer.name
, поскольку массив распадается до указателя на 1-й элемент:GetComputerNameA(computer.name, amp;cchComputerName)