+ -
当前位置:首页 → 问答吧 → sscanf函数里的一个warning

sscanf函数里的一个warning

时间:2010-07-27

来源:互联网

  1. int main()
  2. {
  3. char *mm="00:3e:4c:00:23:54";
  4. unsigned char mm_mac[6];
  5. sscanf(mm, "%02x:%02x:%02x:%02x:%02x:%02x", &mm_mac[0], &mm_mac[1], &mm_mac[2], &mm_mac[3], &mm_mac[4], &mm_mac[5] );
  6. return 0;
  7. }
复制代码


请问如何消除下面的warning?

mac.c:9: warning: unsigned int format, different type arg (mm_mac 3)
mac.c:9: warning: unsigned int format, different type arg (mm_mac 4)
mac.c:9: warning: unsigned int format, different type arg (mm_mac 5)
mac.c:9: warning: unsigned int format, different type arg (mm_mac 6)
mac.c:9: warning: unsigned int format, different type arg (mm_mac 7)
mac.c:9: warning: unsigned int format, different type arg (mm_mac
      

非常感谢!!

作者: 灰菲湮灭   发布时间: 2010-07-27

把unsigned char改为unsigned int就没了,不过还不明白为什么

作者: jssfy   发布时间: 2010-07-27

  1. w.c:51: 警告:格式‘%02x’需要类型‘unsigned int *’,但实参 3 的类型为‘unsigned char *’
  2. w.c:51: 警告:格式‘%02x’需要类型‘unsigned int *’,但实参 4 的类型为‘unsigned char *’
  3. w.c:51: 警告:格式‘%02x’需要类型‘unsigned int *’,但实参 5 的类型为‘unsigned char *’
  4. w.c:51: 警告:格式‘%02x’需要类型‘unsigned int *’,但实参 6 的类型为‘unsigned char *’
  5. w.c:51: 警告:格式‘%02x’需要类型‘unsigned int *’,但实参 7 的类型为‘unsigned char *’
  6. w.c:51: 警告:格式‘%02x’需要类型‘unsigned int *’,但实参 8 的类型为‘unsigned char *’
复制代码

作者: donglongchao   发布时间: 2010-07-27

如果我只想定义为

unsigned char mm_mac[6];

不改它的定义类型,要怎么才能消除warning呢?

warning的原因应该是因为字节长度不匹配。。

作者: 灰菲湮灭   发布时间: 2010-07-27

或者说我想把一个
char *mm="00:3e:4c:00:23:54";
转化成
unsigned char mm_mac[6];

里面各项值为mm_mac[0....6] = 0x0, 0x3e, 0x4c, 0x0,  0x23, 0x54;

要怎么做呢?

作者: 灰菲湮灭   发布时间: 2010-07-27

sscanf(mm, "%02x:%02x:%02x:%02x:%02x:%02x", (unsigned int *)&mm_mac[0], (unsigned int *)&mm_mac[1], (unsigned int *)&mm_mac[2], (unsigned int *)&mm_mac[3], (unsigned int *)&mm_mac[4], &mm_mac[5] );

作者: mgqw   发布时间: 2010-07-27