简单vc++代码 帮详细解释一下(不会vc)

来源:百度知道 编辑:UC知道 时间:2024/06/04 04:11:13
我会 vb delphi
如下:
typedef struct _HTTP_DISK_INFORMATION {
ULONG Address;
USHORT Port;
USHORT HostNameLength;
UCHAR HostName[256];
USHORT FileNameLength;
UCHAR FileName[1]; //关键是这个变量 是存储的指针吗 ?
...
定义
char* FileName; //是个指针吗 ?
...
FileName = strstr(Url, "/");
strcpy(HttpDiskInformation->FileName, FileName); //filename不是长度为1的 变量吗 ? 怎么 printf HttpDiskInformation->FileName出来
是一个字符串 ?
.h文件
typedef struct _HTTP_DISK_INFORMATION {
ULONG Address;
USHORT Port;
USHORT HostNameLength;
UCHAR HostName[256];
USHORT FileNameLength;
UCHAR FileName[1];
} HTTP_DISK_INFORMATION, *PHTTP_DISK_INFORMATION;
....
.c文件里 定义
PHTTP_DISK_INFORMATION HttpDiskInformation;

UCHAR FileName[1]; //关键是这个变量 是存储的指针吗 ?
这是个字符串数组,包含1个字符,由于字符串有结束位要占1个字符,这个数组就没有意义。他是struct _HTTP_DISK_INFORMATION 的成员变量

char* FileName; //是个指针吗 ?
这是个字符串指针,和UCHAR FileName[1]; 同名,但是2回事,2者是不同的2个变量。
strcpy(HttpDiskInformation->FileName, FileName); //filename不是长度为1的 变量吗 ? 怎么 printf HttpDiskInformation->FileName出来
HttpDiskInformation的说明没有啊,如果是_HTTP_DISK_INFORMATION,那就有问题了,这个字符串数组只有1个元素,strcpy执行是不成功的。

LZ是不打错了。UCHAR FileName[1]; 应该是UCHAR FileName[10];
从程序看,这是个存储指针的字符串数组,不可能就1个元素。

url 值为'http://ip/bookcd/1.iso'
FileName = strstr(Url, "/");
这时,FileName 是指向Url字符串第一个/的地址的指针,也就是:后面那个/的地址的指针。

FileName[1]指针数组,类行为UCHAR

FileName是指向strstr(Url, "/"); 的指针数组,只不过长度为1,注意

"/",所以是字符串

此时FileName是指向//ip/bookcd/1.iso的指针
strstr(char *s1, char *s2) : 在s1中查找s2,返回找到的位置,若找不到则返回NULL