我有一个传递字符指针的函数,例如:
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变量中...但是我还必须复制它吗?
答案 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);
。