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

  • Post author:
  • Post category:其他





':'

是字符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));// : 一个字符
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]



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;
}
in_str=[00:0c:29:c0:26:12]
out_str=[000c29c02612]
Hello World!------------------------



方法二

#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;
}

in_str=[00:0c:29:c0:26:12]
out=[000c29c02612]
Hello World!------------------------



方法三

#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;
}



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;
}
000c29c02612
Hello World!---



方法五

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"



版权声明:本文为qq_47355554原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。