C语言(VC++6.0)获取cpu编码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言(VC++6.0)获取cpu编码相关的知识,希望对你有一定的参考价值。

我在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;

参考技术A 有个办法是先写入到文件,再从文件读取
#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");

追问

的确不错,还有没有跟优的算法呢

追答

暂时没想到

本回答被提问者采纳

VC++获取CPU序列号 CPU ID

CString strCPUID;
unsigned long s1, s2;

__asm
		mov eax, 01h
		xor edx, edx
		cpuid 
		mov s1, edx
		mov s2, eax
	
 
strCPUID.Format(_T("%08X%08X"), s1, s2);

SetDlgItemText(IDC_STATIC,strCPUID);

  

参考https://blog.csdn.net/WU9797/article/details/81209531

以上是关于C语言(VC++6.0)获取cpu编码的主要内容,如果未能解决你的问题,请参考以下文章

VC++6.0下C语言怎样控制光标

为啥在网上找的一些c语言程序的代码在vc++6.0中编译总是出现错误?求指教

C语言++符号的问题!vc++6.0和Dev-C++运行结果不一致!

vc++6.0怎么编译多个C文件

C语言旅客信息管理系统(VC++6.0)

C/C++编程笔记:VC++6.0环境下调试 C语言 代码的方法和步骤