In message <9d71df8a63af2a669698ea94c2a5111c / ruby-forum.com>, Haoqi Haoqi writes: >here is my simple test: >where is my mistake?? >#include "ruby.h" >#include "stdio.h" >static VALUE >tests(){ > char *s1="a "; > char *s2=" b"; > char *buf; > sprintf(buf,"%s after %s",s1,s2); Right about here. "buf" is a pointer. Where, exactly, do you think it points? Have you told the compiler to point it AT anything? -s