#include <iostream.h>
char buffer[10];
int main (void)
{
unsigned long size=sizeof(buffer);
GetComputerName(buffer, &size);
cout<<buffer<<endl;
return 0 ;
}
Определить имя компьютера на C + API
вот исходник
Код:
#include <stdio.h>
#include <windows.h>
int main (void)
{
char define(void);
printf("Youre comp name is %c\n", define());
return 0 ;
}
char define(void)
{
char buffer[30];
DWORD size;
size=sizeof(buffer);
GetComputerName(buffer,&size);
return buffer;
}
#include <windows.h>
int main (void)
{
char define(void);
printf("Youre comp name is %c\n", define());
return 0 ;
}
char define(void)
{
char buffer[30];
DWORD size;
size=sizeof(buffer);
GetComputerName(buffer,&size);
return buffer;
}
одну ошибку исправил,чтобы компилилось надо было исходный файл переменовать из *.cpp в *.с но имя компа не выводиться все равно...(
Цитата:
[COLOR=#000000][COLOR=#0000bb]buffer[/COLOR][/COLOR]
является локальной, которая автоматически уничтожается в момент возврата из функции
Цитата:
define
Я бы написал так:
Код:
Код:
printf("Youre comp name is %c\n", define());
надо писать вместо %с - %s
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
int main (void)
{
char buffer[10];
unsigned long size=50;
GetComputerName(buffer, &size);
//cout<<buffer<<endl;
printf(buffer,"s");
return 0 ;
}
#include <stdafx.h>
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
int main (void)
{
char buffer[10];
unsigned long size=50;
GetComputerName(buffer, &size);
cout<<buffer<<endl;
//printf(buffer,"s");
return 0 ;
}
Цитата: Неля
printf(buffer,"s");
имелось ввиду printf("%s", buffer) что ли?
Код:
char *define
функция должна возвращать не один символ, а указатель на строку!
Как это понимать:
Код:
char buffer[[highlight]10[/highlight]];
unsigned long size=[highlight]50[/highlight];
unsigned long size=[highlight]50[/highlight];
Правильный вариант определения размера буфера привёл SergPas.
На другую вашу ошибку указал Phodopus.
И ещё: а вдруг проект будет компилиться с юникодной кодировкой?..
Осмелюсь предложить такой вариант, универсальный:
Код:
#include <iostream>
#include <windows.h>
int main()
{
TCHAR buffer[MAX_COMPUTERNAME_LENGTH + 1];
DWORD size = sizeof(buffer) / sizeof(TCHAR); // можно так
//DWORD size = MAX_COMPUTERNAME_LENGTH + 1; // или так
GetComputerName(buffer, &size);
std::wcout << buffer << std::endl; // C++ style
_tprintf(_T("%s\n"), buffer); // C style
return 0;
}
#include <windows.h>
int main()
{
TCHAR buffer[MAX_COMPUTERNAME_LENGTH + 1];
DWORD size = sizeof(buffer) / sizeof(TCHAR); // можно так
//DWORD size = MAX_COMPUTERNAME_LENGTH + 1; // или так
GetComputerName(buffer, &size);
std::wcout << buffer << std::endl; // C++ style
_tprintf(_T("%s\n"), buffer); // C style
return 0;
}
Напоследок не мешало бы сделать проверку успешности выполнения функции GetComputerName.