C/C++去掉MAC地址中的冒号,获取值

简介: 5种方法

':' 是字符ASCII码, ":"是字符串

printf("1. ':'   c==[%c], d==[%d], sizeof=[%d]\n",':',':',sizeof(':'));// ':'==int
printf("2. \":\"   c==[%c], s==[%s], d==[%d], sizeof=[%llu]\n", ":",":",":",sizeof(":"));//":"==字符串( "" 和 : 两个字符)

printf("\n");

char a1=':';
char *a2=":";
printf("a1==':'   c==[%c], d==[%d], sizeof=[%d]\n",a1,a1,sizeof(a1));// : 一个字符
printf("a2==\":\"   c==[%c], s==[%s], d==[%d], sizeof=[%d]\n", a2,a2,a2,sizeof(a2));//":"==字符串( "" 和 : 两个字符) ,a2指针在64位系统下是8位
printf("\n");
printf("a2==\":\"   c==[%c], d==[%d], sizeof=[%d]\n", *a2,*a2,sizeof(*a2));// : 一个字符
AI 代码解读
1. ':'   c==[:], d==[58], sizeof=[4]
2. ":"   c==[], s==[:], d==[4210688], sizeof=[2]

a1==':'   c==[:], d==[58], sizeof=[1]
a2==":"   c==[], s==[:], d==[4210688], sizeof=[8]

a2==":"   c==[:], d==[58], sizeof=[1]
AI 代码解读

C 语言

方法一

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* strdel(char* in_str,char del_x)
{
    char *p;
    char *out_str=(char *)malloc(strlen(in_str));
    char *q=out_str;
    for(p=in_str;*p!='\0';p++)
    {
        if(*p!=del_x)
        {
            *q=*p;
             q++;
        }
    }
    *q=*p;// *p=='\0'
    return out_str;
}

int main()
{
    char in_str[64];
    strcpy(in_str,"00:0c:29:c0:26:12");
    printf("in_str=[%s]\n",in_str);
    
    char *out_str=strdel(in_str,':');
    printf("out_str=[%s]\n",out_str);
    printf("Hello World!------------------------\n");
    return 0;
}
AI 代码解读
in_str=[00:0c:29:c0:26:12]
out_str=[000c29c02612]
Hello World!------------------------
AI 代码解读

方法二

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void strdel(char* in_str,char del_x)
{
    char *p;
    char *q;

    for(p=in_str,q=in_str;*p!='\0';p++)
    {
        if(*p!=del_x)
        {
            *q++=*p;// <==> *q=*p;q++;
        }
    }
    *q=*p;
}

int main()
{
    char in_str[64];
    strcpy(in_str,"00:0c:29:c0:26:12");
    printf("in_str=[%s]\n",in_str);
    strdel(in_str,':');
    printf("out=[%s]\n",in_str);
    printf("Hello World!------------------------\n");
    return 0;
}
AI 代码解读
in_str=[00:0c:29:c0:26:12]
out=[000c29c02612]
Hello World!------------------------
AI 代码解读

方法三

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *get_str(char *str)
{
    char *pch;
    char *ret_str=(char *)calloc(0,strlen(str));
    pch = strtok(str, ":");
    while (pch != NULL)
    {
        strcat(ret_str,pch);
        pch = strtok(NULL, ":");
    }
    return ret_str;
}
int main()
{
    char str[] = "00:0c:29:c0:26:12";
    char *ret_str;
    ret_str = get_str(str);
    printf("[%s]\n", ret_str);
    return 0;
}
AI 代码解读

C++

方法四

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
    char *in_str="00:0c:29:c0:26:12";
    //std::string str = "00:0c:29:c0:26:12";
    std::string str(in_str);
    str.erase(std::remove(str.begin(), str.end(), ':'), str.end());
    std::cout << str << std::endl;
    cout << "Hello World!---" << endl;
    return 0;
}
AI 代码解读
000c29c02612
Hello World!---
AI 代码解读

方法五

QString str = "00:0c:29:c0:26:12";
QStringList list = str.split(":");
qDebug()<<list;                     // ("00", "0c", "29", "c0", "26", "12")
QString ret_str = list.join("");    //无间隔拼接
qDebug()<<ret_str;                  //"000c29c02612"

//QStringList的join函数可以将QStringList中的所有字符串用指定的字符串连接起来,形成一个新的字符串。
QStringList list2 = {"a", "b", "c"};
QString ret_str2=list2.join("-");
qDebug()<<ret_str2;                 //"a-b-c"
AI 代码解读
相关文章
|
9月前
|
C++ 双冒号::开头的语法,::变量名,获取全局作用域变量
C++ 双冒号::开头的语法,::变量名,获取全局作用域变量
87 0
C++学习笔记第三天:类、虚函数、双冒号
类 class Box { public: double length; // 盒子的长度 double breadth; // 盒子的宽度 double height; // 盒子的高度 }; 类成员的作用域: public:公共成员。
1617 0
Mac上关于shell使用Python3和C++11声明
1.使用Python3         Mac上的shell上自带的Python版本是2.7,当需要使用Python3时,下载安装好Python时,在shell上敲入Python发现却还是显示Python2.
1027 0
Mac上写C++
用惯Windows的同学可能刚开始用Mac的时候并不知道如何写C++,我刚开始在Mac上写C++的时候也遇到过这个困扰,Mac上并没有Windows上自己用习惯的Visual C++,下面我分享一下个人在写C++的时候所用的两个方法:       1.
1030 0
VC++获取网卡MAC、硬盘序列号、CPU ID、BIOS编号
<p> </p> <p>以下代码可以取得系统特征码(网卡MAC、硬盘序列号、CPU ID、BIOS编号) </p> <p>    BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码</p> <p>    UINT uSystemInfoLen = 0; // 在程序执行完毕后,此处存储取得的系统特征码的长度 </p> <p>    /
2941 0
|
23天前
|
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
62 19
【C++面向对象——类与对象】CPU类(头歌实践教学平台习题)【合集】
声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,以及两个公有成员函数run、stop。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。​ 相关知识 类的声明和使用。 类的声明和对象的声明。 构造函数和析构函数的执行。 一、类的声明和使用 1.类的声明基础 在C++中,类是创建对象的蓝图。类的声明定义了类的成员,包括数据成员(变量)和成员函数(方法)。一个简单的类声明示例如下: classMyClass{ public: int
42 13
【C++面向对象——继承与派生】派生类的应用(头歌实践教学平台习题)【合集】
本实验旨在学习类的继承关系、不同继承方式下的访问控制及利用虚基类解决二义性问题。主要内容包括: 1. **类的继承关系基础概念**:介绍继承的定义及声明派生类的语法。 2. **不同继承方式下对基类成员的访问控制**:详细说明`public`、`private`和`protected`继承方式对基类成员的访问权限影响。 3. **利用虚基类解决二义性问题**:解释多继承中可能出现的二义性及其解决方案——虚基类。 实验任务要求从`people`类派生出`student`、`teacher`、`graduate`和`TA`类,添加特定属性并测试这些类的功能。最终通过创建教师和助教实例,验证代码
46 5