项目背景:生产制造型公司有多台生产测试设备同时运行,测试中产品错误代码记录在本地,现在需要将多台设备测试过程中出现的产品错误代码保存在局域网某台主机的公共文件中
步骤1:
测试设备软件用的CVI9.0,不知怎么回事有部分代码就是编译不过,无奈只好换其他编译器把这部分代码写成.exe文件。代码功能:将本机MAC地址保存在.txt文件中供读取,因为设备是按MAC地址区分的。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Windows.h"
#define MAC_HEADER_E "Physical Address"
#define MAC_HEADER_C "物理地址"
int main(int argc, char * argv [ ])
{
char *netname = "本地连接";
char buf [4096];
FILE *fp;
char *tmp1, *tmp2;
int size;
char mac[20] = {0};
system("ipconfig /all > d:\\tmp.txt");
fp = fopen("d:\\tmp.txt", "r");
if(fp == NULL)
{
printf("can not find tmp.txt, please check \n");
return -1;
}
fseek(fp, 0, SEEK_END);//将指针移动到文件结尾
size = ftell(fp); //得到流式文件的当前读写位置,其返回值是当前读写位置偏离文件头部的字节数
if(size >= sizeof(buf))
{
printf("the buffer size is too small, should be more than %d\n", size);
fclose(fp);
}
fseek(fp, 0, SEEK_SET);
memset(buf, 0, sizeof(buf));
fread(buf, 1, size, fp);//从一个文件流中读数据,读取 size个元素 ,
fclose(fp); //每个元素 1 字节.如果调用成功返回 值大于count。如不成功,返回实际读取的元素个数,小于count.
tmp1 = strstr(buf, netname); //strstr() 函数搜索一个字符串在另一个字符串中的第一次出现
if(tmp1 == NULL) //该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。
{
printf("can not find network name %s, please check your network name\n", netname);
return -2;
}
tmp2 =