这是我的代码:
char *str = malloc(100*sizeof(char));
*str ="Hello"; // or pass it any string
现在我想传入str
函数:
sys_open(const char * 文件名,int 标志,int 模式)
当我使用 char 数组作为第二个参数时,它可以工作,但使用其值被复制过来的指针不起作用。
我可以用 char 数组实现我想要的,但为什么我不能用指针做同样的事情呢?
您不能在 C 中以这种方式分配字符串。您需要使用strcpy(3)
它或其亲属之一。
有几点不对:
*str = "Hello"; // or pass it any string
str
is char*
, *str
is a char
, and "Hello"
is a const char*
(嗯,实际上const char[6]
它衰减成const char*
)。将 a 分配给 a 是非法const char*
的char
。
假设您的意思是str = "Hello";
,那仍然是错误的,因为它正在重新分配指针str
以指向字符串文字 "Hello"
。您之前分配的内存malloc
现在没有任何指向它,并且您已经泄漏了内存。
在你做的时候传递str
给sys_read
你是行不通的。 str
指向一个字符串文字,而不是您分配的可写内存。不仅会count
出错,而且sys_read
根本无法写入。(字符串文字是不可变的,尝试修改它会导致未定义的行为。)
在程序中,我觉得缺少类型转换,因为 malloc 返回 avoid *
并将其分配给char *
会产生错误。