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语言。 展开
 我来答
嫑名字可以吗
推荐于2018-04-05 · TA获得超过389个赞
知道答主
回答量:90
采纳率:0%
帮助的人:8万
展开全部

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;
}
zhccsd
推荐于2016-06-13 · TA获得超过4042个赞
知道大有可为答主
回答量:1347
采纳率:66%
帮助的人:903万
展开全部
有个办法是先写入到文件,再从文件读取
#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");
}
}
追问
的确不错,还有没有跟优的算法呢
追答
暂时没想到
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式