Thanks Gleb Peregud.<div><br></div><div>Your are right. But a new request is come on. I input list [1,7,0,9] as parameter. Ii only return [1,7]. The [0,9] is lose. Maybe the '0' elment as a <span class="Apple-style-span" style>NUL in C. </span></div>
<div>What  should i do . </div><div><br></div><div>Thanks</div><div><br></div><div>8>complex6:get_name([1,7,0,9]).</div><div><div>[1,7]</div><div>9> </div></div><div><br><div class="gmail_quote">2011/12/14 Gleb Peregud <span dir="ltr"><<a href="mailto:gleber.p@gmail.com">gleber.p@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">2011/12/14 ÀÉÏÌÎä <<a href="mailto:langxianzhe@gmail.com">langxianzhe@gmail.com</a>>:<br>
<div><div></div><div class="h5">> hi,<br>
> I using nif mehod to Invoke C funtion in Erlang.<br>
> come code£º<br>
> 1,<br>
> char *y;<br>
> if (!enif_get_string(env, argv[0], y, sizeof(y), ERL_NIF_LATIN1))<br>
><br>
> I input "123456" args, but only return "123".<br>
><br>
> 2,char *y;<br>
> if (!enif_get_string(env, argv[0], y, 10, ERL_NIF_LATIN1))<br>
><br>
> this only appear Segmentation fault<br>
><br>
> I have no idea.<br>
> Please help me.<br>
><br>
> Thanks.<br>
> From jason.<br>
<br>
</div></div>"char *y" is actually just a pointer, so sizeof(y) returns 4, which is<br>
a size of the pointer. Since you don't know how long is the string,<br>
you should prepare a big enough buffer to receive it. So try the<br>
following code:<br>
<br>
#define MAXBUFLEN       1024<br>
<br>
char y[MAXBUFLEN];<br>
if (enif_get_string(env, argv[0], y, MAXBUFLEN, ERL_NIF_LATIN1) < 1)<br>
    return enif_make_badarg(env);<br>
</blockquote></div><br></div>