-2

这是我的代码:

char *str = malloc(100*sizeof(char));
*str ="Hello"; // or pass it any string

现在我想传入str函数:

sys_open(const char * 文件名,int 标志,int 模式)

当我使用 char 数组作为第二个参数时,它可以工作,但使用其值被复制过来的指针不起作用。

我可以用 char 数组实现我想要的,但为什么我不能用指针做同样的事情呢?

4

3 回答 3

4

您不能在 C 中以这种方式分配字符串。您需要使用strcpy(3)它或其亲属之一。

于 2013-02-09T04:10:36.393 回答
1

有几点不对:

*str = "Hello"; // or pass it any string
  • stris char*, *stris a char, and "Hello"is a const char*(嗯,实际上const char[6]它衰减成const char*)。将 a 分配给 a 是非法const char*char

  • 假设您的意思是str = "Hello";,那仍然是错误的,因为它正在重新分配指针str以指向字符串文字 "Hello"。您之前分配的内存malloc现在没有任何指向它,并且您已经泄漏了内存。

  • 在你做的时候传递strsys_read你是行不通的。 str指向一个字符串文字,而不是您分配的可写内存。不仅会count出错,而且sys_read根本无法写入。(字符串文字是不可变的,尝试修改它会导致未定义的行为。)

于 2013-02-09T04:20:07.773 回答
-2

在程序中,我觉得缺少类型转换,因为 malloc 返回 avoid *并将其分配给char *会产生错误。

于 2013-02-09T04:18:20.553 回答