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编码的主要内容,如果未能解决你的问题,请参考以下文章
为啥在网上找的一些c语言程序的代码在vc++6.0中编译总是出现错误?求指教