16,472
社区成员
发帖
与我相关
我的任务
分享
PSTR strGuid = "EF41A66B-25E1-46B2-964B-E4F70534807F";
struct {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} guid;
sscanf_s(
strGuid,
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
&(guid.Data1),
&(guid.Data2),
&(guid.Data3),
&(guid.Data4[0]),
&(guid.Data4[1]),
&(guid.Data4[2]),
&(guid.Data4[3]),
&(guid.Data4[4]),
&(guid.Data4[5]),
&(guid.Data4[6]),
&(guid.Data4[7])
);
再来一段,vc2010测试通过[/quote]
你这样不报错吗?内存溢出 PSTR strGuid = "EF41A66B-25E1-46B2-964B-E4F70534807F";
struct {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} guid;
sscanf_s(
strGuid,
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
&(guid.Data1),
&(guid.Data2),
&(guid.Data3),
&(guid.Data4[0]),
&(guid.Data4[1]),
&(guid.Data4[2]),
&(guid.Data4[3]),
&(guid.Data4[4]),
&(guid.Data4[5]),
&(guid.Data4[6]),
&(guid.Data4[7])
);
再来一段,vc2010测试通过//EF41A66B-25E1-46B2-964B-E4F70534807F 这种中间有四个“-”分割的字符串可以用上面的方法,
//但是我的字符串是EF41A66B-25E1-46B2-964BE4F70534807F,中间只有三个“-”,这样调用CLSIDFromString得不到GUID,怎么办
#include <stdio.h>
char s[]="EF41A66B-25E1-46B2-964BE4F70534807F";
char d[80];
int main() {
sprintf(d,"%.23s-%s",s,s+23);
printf("[%s]\n",d);
return 0;
}
//[EF41A66B-25E1-46B2-964B-E4F70534807F]
//
作为一个C程序员,对
scanf,sscanf,fscanf
printf,sprintf,fprintf
这类函数的用法,还是要做到“拳不离手,曲不离口”的。
CString result;
result.Format(_T("%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x"),
guid.Data1,
guid.Data2,
guid.Data3,
guid.Data4[0],
guid.Data4[1],
guid.Data4[2],
guid.Data4[3],
guid.Data4[4],
guid.Data4[5],
guid.Data4[6],
guid.Data4[7]);
不好意思,上面写错了,这个是正确的。