C中的字符串复制

时间:2018-10-13 01:07:05

标签: c string malloc strcpy strdup

我有一个传递字符指针的函数,例如:

this.boundClicks = {};
// ...
if (!this.boundClicks['111']) this.boundClicks['111'] = () => this.handleClick(111);
return (
  <div className="App">
    <button onClick={this.boundClicks['111']}>Click</button>
  </div>
);

我想将字符串复制到临时字符串变量,然后将其复制到结构中。到目前为止,这是我所做的:

funtion_name (char* string){
...
}

当我调用该函数时,这给了我一个分段错误。我认为这是因为不允许直接复制到struct变量中...但是我还必须复制它吗?

2 个答案:

答案 0 :(得分:1)

您要复制两次,大概是第二个目标ptr->name分配不正确,因此会崩溃。

您的意思是:

ptr->name = malloc(strlen(string)+1);
strcpy(ptr->name, string);

在目标位置 分配缓冲区。除非绝对必要,否则不要乱使用临时变量。

您写入的

每个缓冲区必须预先 为其分配足够的内存。 C不会为您检查此操作,它会毫不犹豫地满足您的要求,因此就像操作电锯之类的危险设备时,您必须密切注意其使用方式。

答案 1 :(得分:0)

您可以将malloc和strcpy与<body> <header> <h1> Example for StackOverflow </h1> </header> <nav id="navi"> <div class="drop"> <button class="dropbutton"> Button - dropdown </button> <div class="links"> <a href="">Random link 1</a> <a href="">Random link 2</a> <a href="">Random link 3</a> </div> </div> </nav> <article> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> <p>Just for filling in the page</p> </article> </body>函数结合在一起。 (strdup

#include <string.h>

完成操作后,请不要忘记在ptr-> name上调用ptr->name = strdup(string);