当前位置: 代码迷 >> 综合 >> sscanf又一个技巧
  详细解决方案

sscanf又一个技巧

热度:33   发布时间:2024-01-26 06:26:38.0

前面的测试代码 又有变化了

抛弃的技巧

#include <stddef.h>#define uint8_t  unsigned char
#define uint16_t unsigned short
#define uint32_t unsigned int
#define uint64_t unsigned long long
#define  uLong unsigned long
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned int uint;int main(void)
{int guid=0;char villageID[33]={0}, buildingID[33]={0};char data[]={"003B67372A020000 0e989b50a49711e98f8a878ebe027dbb 1f111160a49711e98f8a878ebe027dbb"};sscanf( (const char*)data,"%x%s%s",&guid,villageID,buildingID) ; printf("%d-%s-%s",guid,villageID,buildingID);
}
//704774144-0e989b50a49711e98f8a878ebe027dbb-1f111160a49711e98f8a878ebe027dbb[Finished in 0.9s]int main(void)
{int guid=0;char villageID[33]={0}, buildingID[33]={0};char data[]={"003B67372A020000 0e989b50a49711e98f8a878ebe027dbb 1f111160a49711e98f8a878ebe027dbb"};sscanf( (const char*)data,"%d%s%s",&guid,villageID,buildingID) ; printf("%d-%s-%s",guid,villageID,buildingID);
}
//3-B67372A020000-0e989b50a49711e98f8a878ebe027dbb[Finished in 0.7s]int main(void)
{int guid=0;char villageID[33]={0}, buildingID[33]={0};char data[]={"003B67372A020000 0e989b50a49711e98f8a878ebe027dbb 1f111160a49711e98f8a878ebe027dbb"};data[8]=' ';sscanf( (const char*)data,"%x%*s%s%s",&guid,villageID,buildingID) ; printf("%x-%s-%s",guid,villageID,buildingID);
}
//3893047-0e989b50a49711e98f8a878ebe027dbb-1f111160a49711e98f8a878ebe027dbb[Finished in 0.7s]我原计划是8个字节表示UID 实际上来料是16那么我暴力丢失后面8个 %*s非常不错