@普派
It didn't work. Therefore, I had to find other ways.
re: strcat在某种特定条件下的优化 roy 2010-08-06 10:09
@hoodlum1980
首先感谢你一直关心拙作,我们都是技术人员,关于技术问题没什么不能谈的,是吗?
其次,我并没有用string_append代替strcat的意思,事实上,通常情况下,我都只用strcat,只有在strcat对效率影响实在太大的时候,才考虑string_append。这个例子中直接用strcpy当然可以,但还是需要strlen计算附加串的长度。
re: 自写的c++命令行参数函数 roy 2010-08-05 09:09
@www
这样啊,但是我在别的地方看到这段话,好像GPL并不意味着要收费呀
使用GPL协议的代码制作的程序并非不能拿来卖钱,事实上RMS开始自由运动的第一笔经费就是通过售卖附在磁碟上的Emacs赚来的。GPL的主要规定在于源代码必须自由公开。
http://www.linuxdiyf.com/viewarticle.php?id=179559
re: strcat在某种特定条件下的优化 roy 2010-08-04 09:16
@hoodlum1980
唉,我反而觉得你没理解好,你是说每次调用string_append都要先调用strlen吗?根本不需要,每次string_append就已经计算了下一次执行时的偏移量了
re: strcat在某种特定条件下的优化 roy 2010-08-02 09:24
@hoodlum1980
这个例子中,从来没用到strlen,而且,这是在某种特定条件下的优化,初始值是空串,长度为0,请看清楚
re: 标准C---关于字符串操作 roy 2010-07-29 17:11
@roy
好像我有点过时了
刚才分别在Linux/Solaris/Tru64/HP-UX下测试这段代码N次,每次输出都是0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *tmp = (char *) malloc(1024 * sizeof(char));
printf("%d\n", strlen(tmp));
free(tmp);
return 0;
}
re: 标准C---关于字符串操作 roy 2010-07-29 16:55
char* temp = (char*)malloc(67 * sizeof(char));
Int leng = strlen(temp);
Memset(temp,0,strlen(temp));
Leng = strlen(temp);
两次leng的值是不一样的,第一次是正确的值,第二次是0;strlen找的是’\0’,但是不包括’\0’;
strlen遇‘\0’结束,所以,在未memset之前,分配的内存块都是随机值,有可能是0,第一次有可能不是固定的值
bool IsLoop(node *head)
{
...
while(p!=NULL&&q!=NULL&&p!=q)
{
p=p->next;
tmp=q->next;
q=tmp->next; // core dump here! if tmp == NULL
}
...
}
re: 将树型数据结构转换为图片并自动排版 roy 2010-07-29 10:42
来学习一下思路先~
re: strcat在某种特定条件下的优化 roy 2010-07-29 09:03
@lwch
原始的strcat一样会溢出,这个问题应该由调用者负责
re: 告别的话 Roy 2010-06-25 10:16
我x,你要去哪?