#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
char output[17]={0};
const char* change_mac(char ch[100])
{
int i = 0;
int k = 0;
bool flag = false;
while(i < strlen(ch))
{
flag = false;
int j = 0;
while (j < 2)
{
if(ch[i] == ':' || strlen(ch) == i )
{
if(k != 0)
{
char temp = output[k-1];
output[k-1] = '0';
output[k] = temp;
}
flag = true;
}
else
{
output[k] = ch[i];
}
i++;
j++;
k++;
}
if(i < strlen(ch) && memchr(ch, ':', strlen(ch)))
{
output[k] = ':';
output[k+1] = '\0';
}
else{
output[k] = ch[i];
}
k++;
if(!flag)
{
i++;
}
}
output[k-1] = 0;
return output;
}
int main(int argc,char **argv)
{
char name[]="";
char ch[100] = "0:0:0:0:0:0";
if(sscanf(argv[1],"%s",ch) == 1)
{
name=change_mac(ch);
}
return 0;
}
/ CMD行がMACを適切な形式に変更してこの「名前」変数に保存すると主張しているので、ここでさらに使用できると思います。型キャストエラーが表示されます/
/* 実行 : ./a.out 0:c:f4:dr:4r:1 */