今天做whereis 那个unix的作业。然后遇到opendir, readdir ,stat等函数呵呵。最后在想怎么表达查找路径的时候,遇到字符指针的问题。
Char *fullpath = “aaaaa”;
Strcpy(fullpath, “hello”);
这样的操作是错误的。因为没有为fullpath在堆中分配内存空间。Strcpy是内存操作。表面上看fullpath好像分配了空间,其实”aaaaa”只是一个字符串常量,不是在堆中的部分,而是在初始化的数据部分。
而char *fullpath=”aaaaa”;
Fullpath= (char*)sizeof(strlen(“hello”));
Strcpy(fullpath,”hello”);
这样就对了。
但是怎么可以像那个递归下降遍历目录保存路径那样,然后fullpath的长度可以自动增加啊?
后来我乒乓球回来之后,认真看了下,后来晚上做出来了whereis 目录 *.cpp呵呵。。中间遇到很多内存出错的问题。
xiaolong16:13:12
char *pmessage;
那么,语句
pmessage ="now is the time";
将把一个指向该字符数组的指针赋值给pmessage。该过程并没有进行字符串的复制,而只
是涉及到指针的操作。
为什么我不可以
char *fullpath;
strcpy(fullpath,"hello");
龙在人间 16:14:35
你想一想假如叫你写个strcpy你会怎么写,看看strcpy的实现原理就明白了
xiaolong16:15:39
我在看那个。
void strcpy(char *s, char *t)
{
while ((*s++ = *t++) != '/0')
;
}
还是没明白。。
潶銫靈魂16:16:37
char *strcpy(char *str1,char *str2)
潶銫靈魂 16:16:47
char *strcpy(char *str1,char *str2)
xiaolong 16:17:11
两个参数都是字符指针。。
xiaolong16:17:26
char *fullpath;
strcpy(fullpath,"hello");这样两个参数也是啊
潶銫靈魂 16:18:37
char *strcpy(char *str1,char *str2)
{
int i;
for(i=0;str2[i]!='/0';i++)
str1[i]=str2[i];
str1[i]='/0';
return str1;
}
龙在人间 16:19:03
明显没有了解const的用法
xiaolong 16:19:09
能不能说下原理,谢了。。
xiaolong 16:21:08
两位朋友,能不能简单解释下那个为什么会段错误,谢了。。。
龙在人间 16:22:04
简单的说,你要把房子一里面的东西搬到房子二里面去,可是房子二只是个概念而已,根本不存在房子二,因为你都没有建好房子二,现在你就叫人把东西搬到房子二里边,试问搬到哪里去