cao884203
这个函数是Unix大神 显摆用的么?

char *pbkslh = NULL;

char *pcolon = NULL;

if ((pcolon = strchr(shortname, ':')) != NULL)

{

*pcolon = '\0';

if (*(pcolon - 1) == '\\')

{

pbkslh = pcolon - 1;

*pbkslh = '\0';

}

}

if (pcolon != NULL)

{

*pcolon = ':'; /* replace the colon */

if (pbkslh)

*pbkslh = '\\';

}

你究竟想干什么??? 求解释 shortname改过去又改回来?

jinlei6394
看起来像是说如果
展开Biu

zuobiao 发表于 2012-11-2 03:53

看起来像是说如果shotname里面有" \:"这样的字符组合,则将第一次出现" \:"之后的所有内容删除 ...

并没删除。的确有点意味不明,处理后字符串看上去完全米有变化。

本来还以为是切断或者分割之类的操作,现在猜测可能两个步骤之间有一些其他的步骤,

比如拷贝\:之前的内容什么的。只是没贴出来。

[查看全文]
jains521
我想说我看不懂
展开Biu

好吧,我想说我看不懂,,保存起来.研究下.

[查看全文]
zuobiao
看起来像是说如果
展开Biu

看起来像是说如果shotname里面有" \:"这样的字符组合,则将第一次出现" \:"之后的所有内容删除

[查看全文]
tpu01yzx
机子上没有
展开Biu

cao884203 发表于 2012-10-26 09:39

机子上没有VC。。。 但是用其他编译器跑都没有问题

可能你的赋值 char shotname = “:”,strchr返回字 ...

你是看出来了,不过这要是在多线程环境下的实时系统就很容易崩溃!anyway,你这代码在哪里看到的?

[查看全文]
cao884203
模式下试试
展开Biu

tpu01yzx 发表于 2012-10-25 21:39

VC6.0 在debug模式下试试

[mw_shl_code=cpp,true]#include

机子上没有VC。。。 但是用其他编译器跑都没有问题

可能你的赋值 char shotname = “:”,strchr返回字符数组的首地址, 之后再做取pcolon-1上一地址内存分配的值,他是未知的,泄露了吧

但是不论上一地址分配的什么,都不影响shortname,后来他完全复原了。

[查看全文]
tpu01yzx
模式下试试
展开Biu

cao884203 发表于 2012-10-25 15:07

没有。。。

VC6.0 在debug模式下试试

[mw_shl_code=cpp,true]#include *本站禁止HTML标签噢*

using namespace std;

int main() {

char shortname[4] = ":";

unsigned int overflow = 0x5CFFFFFF;

char *pbkslh = NULL;

char *pcolon = NULL;

printf("%08X\n", overflow);

if ((pcolon = strchr(shortname, ':')) != NULL)

{

*pcolon = '\0';

if (*(pcolon - 1) == '\\')

{

pbkslh = pcolon - 1;

*pbkslh = '\0';

}

}

printf("%08X\n", overflow);

if (pcolon != NULL)

{

*pcolon = ':'; /* replace the colon */

if (pbkslh)

*pbkslh = '\\';

}

return 0;

}

[/mw_shl_code]

[查看全文]
cao884203
内存溢出了
展开Biu

tpu01yzx 发表于 2012-10-25 13:35

内存溢出了

没有。。。

[查看全文]
tpu01yzx
内存溢出了
展开Biu

内存溢出了

[查看全文]