문자열에 대한 반전 문제

때때로 수요가 비교적 이상하기 때문에 아래에 코드를 직접 붙이는데 사용하는 기술은 두 가지가 있다.문자열 반전, 즉 위치를 바꾸는 방법이 다르거나 2.출력 서식, 4바이트당 "-"로 구분
#include 
#include 
#include 

typedef struct _Data	
{
	char rawData[5][4];
	char convertData[30];
}Data;

int main()
{
	Data  tmp;
	unsigned char a[10] = {0x01, 0x02, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77};
	unsigned long long c    = 0;
	unsigned short moduleId = 0;
	unsigned char* p1 , *p2;

	for(p1 = &a[0], p2 = &a[9]; p2 > p1; p1++, p2 --)
	{
		*p1 ^= *p2;
		*p2 ^= *p1;
		*p1 ^= *p2;
	}

	memcpy(&c, &a[2], 6);
	memcpy(&moduleId, &a[0], 2);
	printf("[%lld], moduleId=[%d]
", c, moduleId); memset(&tmp, 0x0, sizeof(tmp)); sprintf((char*)&tmp.rawData, "%015lld%04d", c, moduleId); sprintf(tmp.convertData, "%.4s-%.4s-%.4s-%.4s-%.4s", tmp.rawData[0], tmp.rawData[1], tmp.rawData[2], tmp.rawData[3], tmp.rawData[4]); printf("Data=[%s]
", tmp.convertData); return 0; }

마지막 sprintf도 다음과 같이 쓸 수 있다.
    sprintf(tmp.convertData, "%.*s-%.*s-%.*s-%.*s-%.*s", 
                sizeof(tmp.rawData[0]), tmp.rawData[0],
                sizeof(tmp.rawData[0]), tmp.rawData[1],
                sizeof(tmp.rawData[0]), tmp.rawData[2],
                sizeof(tmp.rawData[0]), tmp.rawData[3],
                sizeof(tmp.rawData[0]), tmp.rawData[4]);

좋은 웹페이지 즐겨찾기