C语言(VC++6.0)获取cpu编码
我在C语言(VC++)中运行system("wmiccpugetProcessorId"),想将其输出结果用字符串保存到程序中,应该怎样做。有人说这样:[starres]...
我在C语言(VC++)中运行system("wmic cpu get ProcessorId"),想将其输出结果用字符串保存到程序中,应该怎样做。有人说这样:[star res]=system("wmic cpu get ProcessorId");再读取res里的内容,可重要怎样定义变量,怎么提取。如果不行,那还能怎么办.是纯C语言。
展开
展开全部
1 要获取CPU编码可以使用dos命令wmic cpu get ProcessorId。
2 要在C语言中执行dos命令,一般使用system("wmic cpu get ProcessorId");
3 由于获取到的cpu编码是打印在命令行中的,要获取结果用system就无法实现了。这时可以用windows提供的_popen函数。该函数的功能为,执行一段dos命令,并将程序运行结果(原本的dos打印)保存在内存中,可以通过文件方式读取。
于是,代码如下:
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char psBuffer[128];
FILE *pPipe;
if( (pPipe = _popen( "wmic cpu get ProcessorId", "rt" )) == NULL )
exit( 1 );//执行失败,退出程序。
while(fgets(psBuffer, 128, pPipe))//读取结果,并输出。
{
printf(psBuffer);
}
/* 关闭执行标识。本质上是释放这段内存。 */
_pclose( pPipe );
return 0;
}
展开全部
有个办法是先写入到文件,再从文件读取
#include <windows.h>
#include <stdio.h>
void main()
{
system("wmic cpu get ProcessorId > 1.txt");
FILE *pf;
pf=fopen("1.txt","r");
if(!pf)
{
printf("get processid fail!");
}
else
{
char *ids=new char[20];
int index=0;
int c;
fseek(pf,42,SEEK_SET);
while((c=getc(pf))!=EOF)
if(c>=48)//wmic cpu get ProcessorId会向文件中插入很多0,必须忽略
*(ids+index++)=c;
*(ids+index)=0;
printf("%s\n",ids);
fclose(pf);
DeleteFile("1.txt");
}
}
#include <windows.h>
#include <stdio.h>
void main()
{
system("wmic cpu get ProcessorId > 1.txt");
FILE *pf;
pf=fopen("1.txt","r");
if(!pf)
{
printf("get processid fail!");
}
else
{
char *ids=new char[20];
int index=0;
int c;
fseek(pf,42,SEEK_SET);
while((c=getc(pf))!=EOF)
if(c>=48)//wmic cpu get ProcessorId会向文件中插入很多0,必须忽略
*(ids+index++)=c;
*(ids+index)=0;
printf("%s\n",ids);
fclose(pf);
DeleteFile("1.txt");
}
}
追问
的确不错,还有没有跟优的算法呢
追答
暂时没想到
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询